5.1.4.5. 程序分配的标识符(Assigned Identifiers)
如果你需要应用程序分配一个标示符(而非Hibernate来生成),你可以使用assigned
生成器。这种特殊的生成器会使用已经分配给对象的标识符属性的标识符值。 这个生成器使用一个自然键(natural key,有商业意义的列-译注)作为主键,而不是使用一个代理键( surrogate key,没有商业意义的列-译注)。这是没有指定<generator>
元素时的默认行为
当选择assigned
生成器时,除非有一个version或timestamp属性,或者你定义了 Interceptor.isUnsaved()
,否则需要让Hiberante使用 unsaved-value="undefined"
,强制Hibernatet查询数据库来确定一个实例是瞬时的(transient) 还是脱管的(detached)。