unsaved-value
属性需要什么?
<id name="userid" column="userid" type="java.lang.Long" unsaved-value="null">
<generator class="sequence">
<param name="sequence">dmuseridseq</param>
</generator>
</id>
答案 0 :(得分:14)
在this精彩文章中解释:
Hibernate映射文件指示Person上的id字段 数据库ID(即它是PERSON表中的主键)。 在id标记内是一个属性,unsaved-value =“null”,它告诉我们 Hibernate使用id字段来确定Person对象是否具有 先前已保存或未保存。 ORM框架必须做到这一点 区分是否应该用SQL保存对象 INSERT或UPDATE语句。在这种情况下,Hibernate假定了 id字段在新对象上开始为null,并在它们出现时分配 先救了。
此外,您可以在“Java Persistence with Hibernate”一书中阅读“unsaved-value”:
答案 1 :(得分:5)
http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/mapping.html
unsaved-value(可选 - 默认为“敏感”值):标识符属性值,指示实例是新实例化的(未保存),将其与在先前会话中保存或加载的分离实例区分开来。
在您的示例中,unsaved-value="null"
似乎毫无意义,因为我怀疑Long
的“合理默认”是null
。
对于原始类型(例如int
)更有用,它不能是null
,并且在某些应用程序中可能不需要0
的默认未保存值({{1} }是一个完全有效的数字值。)