我有一个名为User的模型,我正在尝试使用entityManager.find()获取User的值;
奇怪的是,对于特定ID“16”,它返回一个类型为User _ $$ _ jvst290_G的对象。 对于所有其他ID,它返回User类。 当我尝试访问其属性时,每个值都被完美地获取,但在eclipse调试器中,每个值都显示为null。
以下是我的代码
boolean success = false;
Feed feed = this.entityManager.find(Feed.class, feedId);
User liker = this.entityManager.find(User.class, userId);
LOGGER.info("unliker is "+liker.getName());
List<User> likers = feed.getLikers();
LOGGER.info("likers before unlike:"+likers.size());
for(User lkr: likers) {
LOGGER.info("ID:"+lkr.getId());// prints all Ids including 16
}
if(likers.remove(liker)) { //Returns false for user with ID 16
feed.setLikers(likers);
LOGGER.info("likers afetr unlike:"+feed.getLikers().size());
this.entityManager.flush();
success = true;
}
else {
LOGGER.error("User has not liked this product");
throw new NoRowChangedException("User has not liked this product");
}
return success;
除了16之外,我不确定它对其他一些值的行为是否相同。 有没有猜到发生了什么?下面是截图
在用户
中重写了相等的方法@Override
public boolean equals(Object obj) {
boolean result = false;
if(obj instanceof User) {
User user = (User) obj;
result = this.id == user.id;
}
return result;
}