Инструмент обратного инжиниринга HibernateTools не добавляет аннотации для генератора - PullRequest
5 голосов
/ 21 января 2011

Я создал свою схему БД MySQL и использую файл обратного инжиниринга Hibernate для создания аннотированного объекта домена (.java).Хотя файл сгенерирован правильно, в нем как-то отсутствует аннотация «Генератор» для поля идентификатора.

Ниже приведен мой файл hibernate.reveng.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE
hibernate-reverse-engineering PUBLIC
"-//Hibernate/Hibernate Reverse
Engineering DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-reverse-engineering-3.0.dtd"
<hibernate-reverse-engineering>
  <table-filter match-name="products" match-catalog="test"></table-filter>
  <table catalog="test" name="products">
    <primary-key>
      <generator class="native"></generator>
      <key-column name="product_id"property="product_id" />
    </primary-key> 
  </table>
</hibernate-reverse-engineering>

и сгенерированный файл класса (Products.java):

// default package
// Generated Jan 21, 2011 8:27:16 PM by Hibernate Tools 3.3.0.GA

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

/**
 * Products generated by hbm2java
 */
@Entity
@Table(name = "products", catalog = "test")
public class Products implements java.io.Serializable {

 private String productId;
 private String productName;

 public Products() {
 }

 public Products(String productId) {
  this.productId = productId;
 }

 public Products(String productId, String productName) {
  this.productId = productId;
  this.productName = productName;
 }

 @Id
 @Column(name = "product_id", unique = true, nullable = false, length = 50)
 public String getProductId() {
  return this.productId;
 }

 public void setProductId(String productId) {
  this.productId = productId;
 }

 @Column(name = "product_name", length = 200)
 public String getProductName() {
  return this.productName;
 }

 public void setProductName(String productName) {
  this.productName = productName;
 }

}

Чего-то не хватает в моем файле hibernate.reveng.xml или hibernate не генерирует аннотацию для "генератора"?

Ответы [ 2 ]

1 голос
/ 07 августа 2013

вам нужно проверить "ejb3" или добавить в конфиг:

<hbm2java  jdk5="true" ejb3="true" />
0 голосов
/ 23 января 2011
  <key-column name="product_id" property="product_id" />

Здесь есть проблема. Эта часть верна: key-column name="product_id", она отображается на столбец БД product_id, но эта часть неверна: property="product_id", это свойство Java, которое называется productId, а не product_id. Это правильное значение:

  <key-column name="product_id" property="productId" />

И да: автогенерация AFAIK возможна только для числовых типов.

...