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

时间:2009-07-31 13:26:42

标签: mysql hibernate annotations

开始一个新项目我想使用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?

3 个答案:

答案 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)

您可能希望查看:http://hibernatepojoge.sourceforge.net/

答案 2 :(得分:-1)

尝试使用@GeneratedValue(strategy=GenerationType.AUTO)。那应该使用MySQL autonum功能。