1
hibernateを使用して、指定されたユーザー名の友人のリストにアクセスしようとしています。ここでは、fetchListOfFriends関数を使用してジェネリックリストをFriendsDetailsのタイプのArraylistに変換するためのServiceクラスがあります。java.lang.ClassCastException:java.lang.Stringは[Ljava.lang.Object;にキャストできません。
@Service
@Transactional
public class DetailsServiceImpl implements DetailsService {
@Autowired
private DetailsDao detailsDao;
@Override
public List<FriendsDetails> fetchListOfFriends(String name) {
@SuppressWarnings("rawtypes")
List listOfFriends=detailsDao.fetchListOfFriends(name);
List<FriendsDetails> friendList= fetchListOfFriendss(listOfFriends);
if(listOfFriends==null){
System.out.println("Empty and null list");
}
System.out.println("size of friendList" + listOfFriends.size());
return friendList;
}
private List<FriendsDetails> fetchListOfFriendss(@SuppressWarnings("rawtypes") List genericList) {
@SuppressWarnings("unchecked")
List<Object> result = (List<Object>) genericList;
Iterator<Object> itr = result.iterator();
List<FriendsDetails> listOfFriend= new ArrayList<FriendsDetails>();
while(itr.hasNext()){
Object[] obj = (Object[]) itr.next();
System.out.println(obj.toString());
String userName = String.valueOf(obj[0]);
FriendsDetails obj1= new FriendsDetails();
obj1.setFriendName(userName);
listOfFriend.add(obj1);
}
return listOfFriend;
}
DetailsDaoImpl.java
@Autowired
private SessionFactory sessionFactory;
@SuppressWarnings("rawtypes")
@Override
public List fetchListOfFriends(String name) {
Session session=sessionFactory.getCurrentSession();
String qureyToFetchFriends="Select name,presenceStatus from UserPresence where name in (Select friendName from Friends where name='"+name+"')";
List listOfFriends=session.createSQLQuery(qureyToFetchFriends).list();
return listOfFriends;
}
Logs.txt
May 22, 2016 1:24:11 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [springmvc] in context with path [/Testing] threw exception [Request processing failed; nested exception is java.lang.ClassCastException: java.lang.String cannot be cast to [Ljava.lang.Object;] with root cause
java.lang.ClassCastException: java.lang.String cannot be cast to [Ljava.lang.Object;
at com.tcs.Service.FriendServiceImpl.searchFriend(FriendServiceImpl.java:61)
at com.tcs.Service.FriendServiceImpl.searchFriend(FriendServiceImpl.java:32)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
コンソールで 'System.out.println(obj.toString());'という行はどうなりますか? –
どのメソッドが例外をスローしていますか、どの行がClassCastExceptionを引き起こしていますか? – alexanderific
@chsdkいいえ、何も印刷できません..新しいリスト 'listOfFriend'を作成するまではコードが実行中ですwhileループに何らかのエラーがあります... –