Эквивалент <generator class = "native"> </generator> с использованием аннотаций MySQL и Hibernate3 - PullRequest
15 голосов
/ 31 июля 2009

Начиная новый проект, я хотел бы использовать аннотации Hibernate с MySQL вместо файлов конфигурации, которые я использовал до сих пор. И я не могу найти эквивалент:

    <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 для автоматической генерации идентификаторов?

Ответы [ 3 ]

11 голосов
/ 31 июля 2009

До версии 5.0 использование стратегии AUTO было эквивалентно использованию native в отображении. Это использовал LegacyFallbackInterpreter:

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
public Long getId() {
    return id;
}

Начиная с Hibernate 5.0, интерпретатором по умолчанию является FallbackInterpeter, который будет использовать генератор SEQUENCE или TABLE в зависимости от базовой базы данных.

Чтобы использовать LegacyFallbackInterpreter, установите hibernate.id.new_generator_mappings на false.

0 голосов
/ 03 августа 2009

Возможно, вы захотите взглянуть на: http://hibernatepojoge.sourceforge.net/

0 голосов
/ 31 июля 2009

Попробуйте использовать @GeneratedValue(strategy=GenerationType.AUTO). Это должно использовать функциональность MySQL autonum.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...