hibernate是否提供了一个返回对象状态(瞬态,持久,分离)的方法?
答案 0 :(得分:3)
请参阅Javadoc Hibernate Session并查看方法
我会使用'get'并进一步检查更改的值,之后它只是一个“saveOrUpdate”来持久化或更新(并重新附加)实际对象
答案 1 :(得分:3)
Session.contains告诉您对象是否与会话相关联。如果它没有标识符,则它是瞬态的,如果它具有标识符并且与会话相关联,则是持久的。分离但不与会话相关联的标识符。
如果这没有帮助,请考虑用更多上下文重新描述您的问题,也就是说,为什么您首先需要知道对象的状态?
答案 2 :(得分:0)
我不同意使用session.contains(obj)
来揭示hibernate对象状态。在简单调用session.clear()
之后,以前持久/加载的对象将被假定为TRANSIENT - 如果您没有主键但是没有主键,则您不知道它处于哪种状态...
在Hibernate 3中可以找到正确的方法: org.hibernate.engine.ForeignKeys.isTransient(...)