2011-01-21 2 views
5

У меня есть моя MySQL DB Schema, и я использую Hibernate Reverse Engineering для создания аннотированного объекта домена (.java). Хотя файл генерируется правильно, он каким-то образом пропускает аннотацию «Генератор» для поля ID.Инструмент обратной обработки HibernateTools не добавляет Аннотации для генератора

Ниже мой 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 или спящий режим не генерирует аннотацию для «генератора»?

+0

После некоторых поисков, я последовал за помощь и сделал следующие исправления: 1) Обновленный PRODUCT_ID тип данных столбца БД для INT 2) Назначенный AUTO_INCREMENT атрибут. Теперь инструмент может генерировать аннотацию для Native Generator, например «@GeneratedValue» в объекте Domain (Products.java). Мне все еще нужно проверить, работает ли это только для столбцов INT или для столбцов с другими типами данных и как заставить его работать для столбцов VARCHAR. – mayur

ответ

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

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

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

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

1

вам нужно проверить «EJB3» или добавить в конфигурации:

<hbm2java jdk5="true" ejb3="true" /> 
Смежные вопросы