我正在使用Play Framework v.1.2.6开发项目,当我尝试从数据库中检索对象时遇到了对象休眠问题。https://www.playframework.com/documentation/1.2.x/jpa
我的查询从一个mysql表中选择行,在结果中有代理对象。请参见下面的图片。
我没有使用任何Hibernate配置文件,只在我的模型类中使用@注释。
我的查询示例:
static List<User> getAllUsersFromAccount(Account account) {
return User.find(
"SELECT u " +
"FROM User u " +
"WHERE u.account=?",
account).fetch();
}
有人知道如何避免在查询结果中获取代理对象吗?
目前,我们遍历用户数组并检查实体是否为HibernateProxy的实例。我们不想这样做,因为可能对其他查询也存在同样的问题。
private static <T> T initializeAndUnproxy(T entity) {
Hibernate.initialize(entity);
if(entity instanceof HibernateProxy) {
entity = (T)((HibernateProxy)entity).getHibernateLazyInitializer().getImplementation();
}
return entity;
}