在hibernate中获取列为null的数据

在hibernate中获取列为null的数据,hibernate,Hibernate,我已经编写了hql,它在hql编辑器中正常工作,但当我在java代码中应用它时,它会给我错误 HQL查询是否正常工作 select auhority.id from Authority as auhority where auhority.action = 'USER_MASTER_FULL_ACCESS' and auhority.aclObject is NULL 用于执行查询的Java代码 String hql = "from " + Authority.class.getCanoni

我已经编写了hql,它在hql编辑器中正常工作,但当我在java代码中应用它时,它会给我错误

HQL查询是否正常工作

select auhority.id  from Authority as auhority where auhority.action = 'USER_MASTER_FULL_ACCESS' and auhority.aclObject is NULL
用于执行查询的Java代码

String hql = "from " + Authority.class.getCanonicalName() + " as model where model."  +     Authority.ACTION + " = ? and model." + Authority.ACL_OBJECT + " is null";
Query query = getSession().createQuery(hql);
query.setParameter(0, action);
List<Authority> list = query.list();
return list;

问题不在于查询。问题是Hibernate需要在执行查询之前刷新会话(将内存中的更改保存到数据库中),以确保查询考虑到这些更改

无法进行刷新,因为某些持久化或修改的SecuredObject引用了一个瞬态(即尚未持久化)实例


正如消息所说,必须保存(或持久化)这个临时实例执行刷新之前。

此查询将在添加到数据库之前检查数据是否存在,然后执行添加查询。因此,在执行此查询之前没有hibernate事务。没有任何持久化或修改的SecuredObject引用,因为它为空。必须有一个,否则Hibernate不会抛出此异常。抛出的异常是哪一行?
org.hibernate.TransientObjectException: object references an unsaved transientinstance - save the transient instance before flushing: com.xxxxx.xxxx.xxxx.SecuredObject
at org.hibernate.engine.ForeignKeys.getEntityIdentifierIfNotUnsaved(ForeignKeys.java:243)
at org.hibernate.type.EntityType.getIdentifier(EntityType.java:456)
at org.hibernate.type.ManyToOneType.isDirty(ManyToOneType.java:265)
at org.hibernate.type.ManyToOneType.isDirty(ManyToOneType.java:275)
at org.hibernate.type.TypeHelper.findDirty(TypeHelper.java:295)
at org.hibernate.persister.entity.AbstractEntityPersister.findDirty(AbstractEntityPersister.java:3403)
at org.hibernate.event.def.DefaultFlushEntityEventListener.dirtyCheck(DefaultFlushEntityEventListener.java:520)
at org.hibernate.event.def.DefaultFlushEntityEventListener.isUpdateNecessary(DefaultFlushEntityEventListener.java:230)....