mor*_*ode 12 mysql hibernate jpa sequences
所以我刚下载了hibernate 5.0.0.1,我尝试了我的项目,之前使用的是hibernate 4.3.
当我插入数据库时,它给了我这个错误:
错误:无法读取hi值 - 您需要填充表:hibernate_sequence
我使用的是mysql,我的生成策略是在GenerationType.auto中设置的,现在看来,hibernate认为使用序列是生成值的最佳策略.但桌子是空的.我认为hibernate试图从序列中获取值但却找不到任何值.但是我很困惑,因为hibernate创建了hibernate,它不应该提供初始值吗?
Joh*_*nko 22
序列表是因为您在一个/所有实体上定义主键的方式.
@Id
@GeneratedValue(strategy = GenerationType.AUTO) // or GenerationType.SEQUENCE
protected Long id;
Run Code Online (Sandbox Code Playgroud)
如果要使用表的标识列:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
protected Long id;
Run Code Online (Sandbox Code Playgroud)
您可以查看此主题以获取更多信息:https: //forums.hibernate.org/viewtopic.php?f = 1&t = 999785&start = 0
@GeneratedValue JPA Annotation
在这些教程中,我们经常使用@GeneratedValue批注让数据库为我们生成唯一的主键.我们在每个示例中都使用了默认的Generation Type,但实际上有四种不同的策略可以让数据库生成主键.这四个选项是:
AUTO IDENTITY TABLE SEQUENCE javax.persistence.GenerationType.AUTO
AUTO生成策略是默认设置,此设置只选择主键生成策略,该策略是相关数据库的默认值,通常是IDENTITY,尽管它可能是TABLE或SEQUENCE,具体取决于数据库的配置方式.通常建议使用AUTO策略,因为它使您的代码和应用程序最具可移植性.
javax.persistence.GenerationType.IDENTITY
IDENTITY选项只允许数据库为您的应用程序生成唯一的主键.没有序列或表用于维护主键信息,而是数据库将只为Hibernate选择适当的唯一号码以分配给实体的主键.对于MySQL,选择了表中可用的第一个最低编号的主键,尽管此行为可能因数据库而异.
javax.persistence.GenerationType.Sequence
某些数据库供应商支持使用数据库序列对象来维护主键.要使用序列,可以将GenerationType策略设置为SEQUENCE,指定生成器注释的名称,然后提供@SequenceGenerator注释,该注释具有用于定义序列注释名称和实际序列对象名称的属性.数据库.
| 归档时间: |
|
| 查看次数: |
19192 次 |
| 最近记录: |