使用MySQL和Hibernate3注释等效于<generator class ="native"> </ generator>

Guy*_*ely 15 mysql annotations hibernate

开始一个新项目我想使用MySQL的Hibernate注释而不是我到目前为止使用的配置文件.而我似乎无法找到相当于:

    <id name="id" type="long" >
        <generator class="native"></generator>
    </id>
Run Code Online (Sandbox Code Playgroud)

我试过用:

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY, generator = "native")
private long id;
Run Code Online (Sandbox Code Playgroud)

但得到了:

org.hibernate.AnnotationException: Unknown Id.generator: native
Run Code Online (Sandbox Code Playgroud)

要么:

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
Run Code Online (Sandbox Code Playgroud)

给我吗:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: PROCEDURE projectName.identity does not exist
Run Code Online (Sandbox Code Playgroud)

有没有人成功部署MySQL和Hibernate3注释来自动生成ID?

hob*_*ave 11

在5.0版之前,使用策略AUTO相当于native在映射中使用.这使用了LegacyFallbackInterpreter:

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
public Long getId() {
    return id;
}
Run Code Online (Sandbox Code Playgroud)

从Hibernate 5.0开始,默认解释FallbackInterpeter器将根据底层数据库使用SEQUENCE生成器或TABLE生成器.

要使用LegacyFallbackInterpreter,请设置hibernate.id.new_generator_mappingsfalse.