开始一个新项目我想使用MySQL的Hibernate注释而不是我到目前为止使用的配置文件。 我似乎找不到相应的:
<id name="id" type="long" >
<generator class="native"></generator>
</id>
我尝试使用:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY, generator = "native")
private long id;
但得到了:
org.hibernate.AnnotationException: Unknown Id.generator: native
或:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
给我:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: PROCEDURE projectName.identity does not exist
是否有人成功部署了MySQL和Hibernate3注释以自动生成ID?
答案 0 :(得分:11)
在5.0版之前,使用策略AUTO
相当于在映射中使用native
。这使用了LegacyFallbackInterpreter
:
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
public Long getId() {
return id;
}
自Hibernate 5.0起,default interpreter is the FallbackInterpeter
将使用SEQUENCE生成器或TABLE生成器,具体取决于底层数据库。
要使用LegacyFallbackInterpreter
,请将hibernate.id.new_generator_mappings
设为false
。
答案 1 :(得分:0)
答案 2 :(得分:-1)
尝试使用@GeneratedValue(strategy=GenerationType.AUTO)
。那应该使用MySQL autonum功能。