从数据库的角度来看,我很难找到@GeneratedValue的准确解释,以及关于发生了什么的不同策略。
是否总是查询数据库并返回最后一个可用值?如果两个不同的进程(不同的Hibernate应用程序)同时访问同一个表,会发生什么情况?
发布于 2012-08-03 10:46:55
我假设你指的是JPA @GeneratedValue。
@GeneratedValue注释告诉ORM如何计算该字段的值。
例如:
@Id
@GeneratedValue(strategy=SEQUENCE, generator="CUST_SEQ")
@Column(name="CUST_ID")
public Long getId() { return id; }
Example 2:
@Id
@GeneratedValue(strategy=TABLE, generator="CUST_GEN")
@Column(name="CUST_ID")
Long id;要理解的关键是,生成的值有一个策略,而生成的值的策略决定了发生了什么。在上面的示例中,序列生成策略意味着ORM将在第一次保存对象时向数据库请求序列的新值。第二个示例指定了一个表生成策略,这意味着ORM将查询表中的一行以确定id的值。在示例2中,没有显示使用哪个表详细信息,因为它引用了名为"CUST_GEN“的生成器
你将会遇到典型的生成器。
H111 UUID -在执行插入之前生成UUID<代码>H212F213
可以开发自定义生成器。与数据库的交互将取决于生成策略。
发布于 2012-08-03 10:45:49
请使用http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html_single/链接进行参考。但是如果你能告诉我你在找什么,我也许能更好地帮助你。下面是关于@GeneratedValue注解…的一些细节我喜欢这篇关于同一主题http://elegando.jcg3.org/2009/08/hibernate-generatedvalue/的博客文章。他的解释工作做得很好。
https://stackoverflow.com/questions/11788483
复制相似问题