Luc*_*uke 7 java mysql hibernate jpa java-ee
我有一个实体应该自动从数据库中获取id.我使用MySQL所以我希望注释@GeneratedValue(strategy=GenerationType.AUTO)可以解决到IDENTITY幕后而不是SEQUENCE.但是,当我试图坚持一个新的实体时,它失败了,说hibernate_sequence没有找到.它显然使用序列策略而不是身份.
我已将persistence.xml中的方言设置为: org.hibernate.dialect.MySQL5InnoDBDialect
Hibernate版本4.2.0.CR1
我读到的所有资源都说,在使用auto as strategy连接到MySQL时应该使用身份.
如果您使用增强的标识符:
properties.put("hibernate.id.new_generator_mappings", "true");
Run Code Online (Sandbox Code Playgroud)
然后使用SequenceStyleGenerator,并且因为MySQL不支持序列,所以它将回退到TABLE生成器.这就是为什么它会查找"hibernate_sequence",这是默认的序列表名称.
如果您不使用新生成器,则使用"本机"生成策略,该策略将查找:
public Class getNativeIdentifierGeneratorClass() {
if ( supportsIdentityColumns() ) {
return IdentityGenerator.class;
}
else if ( supportsSequences() ) {
return SequenceGenerator.class;
}
else {
return TableHiLoGenerator.class;
}
}
Run Code Online (Sandbox Code Playgroud)
所以它选择:
取决于您当前的数据库功能.
在这种情况下,MySQL将始终选择身份.有关更多详细信息,请查看此文章.
| 归档时间: |
|
| 查看次数: |
9028 次 |
| 最近记录: |