1、我在使用 Hibernate 时,当ID是非法时(数据表中不存在的记录),但是Hibernate 返回给我的对象不是Null,是一个CGlib 代理对象,我现在如何判断是否取得了真正的对象.
try{
Hibernate.initialize(po);
}catch(ObjectNotFoundException ex){
// do anything
}
Hiberante.initialize 先强制它加载,如果加载出问题,那就说明get用的ID不对,获取的不是实体对象,而是代理对象
(另外一种思路:用po.getClass().getName() 看看是不是代理对象)
2、HQL或SQL查询参数为数组时
String querySentence = "FROM User user WHERE user.id in (:ids)";
Query query = getSession().createQuery(querySentence);
query.setParameterList("ids", ids);
return query.list();
其中,传入的ids可以是任何类型的数组;
本文详细介绍了在使用Hibernate时,遇到ID为非法值导致返回代理对象的问题解决方法,以及HQL或SQL查询参数为数组时的正确实现方式。包括通过尝试初始化对象和检查对象类名来判断是否取得真正的实体对象,同时提供了数组参数查询的实例。
587

被折叠的 条评论
为什么被折叠?



