2011-01-21 4 views
5

MySQL 데이터베이스 스키마를 생성했습니다. Hibernate 리버스 엔지니어링 파일을 사용하여 주석 된 도메인 객체 (.java)를 생성하고 있습니다. 파일이 올바르게 생성되었지만 ID 필드의 "Generator"주석이 누락되었습니다.HibernateTools 리버스 엔지니어링 툴은 생성기에 대한 주석을 추가하지 않습니다.

<?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) : 내 hibernate.reveng.xml 파일에서 누락 뭔가

// 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가 "generator"에 대한 주석을 생성하지 않습니까?

+0

일부 검색 후, 나는 도움을 따라 다음 수정했다 : 2) 할당 AUTO_INCREMENT를 INT 1) 업데이트 PRODUCT_ID DB 컬럼 데이터 유형을 속성. 이제이 도구는 도메인 객체 (Products.java)의 "GeneratedValue"와 같은 Native Generator에 대한 주석을 생성 할 수 있습니다. 필자는 여전히 INT 열 또는 다른 데이터 형식의 열에 대해서만 작동하는지 여부와 VARCHAR 열에서 작동하도록 만드는 방법을 확인해야합니다. – mayur

답변

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

여기에 문제가 있습니다. 이 부분은 key-column name="product_id"이고 DB 열 product_id에 매핑되지만이 부분은 property="product_id"이고 이것은 Java 속성이며 product_id이 아니라 productId입니다. 다음은 올바른 값입니다.

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

예 : AFAIK 자동 생성은 숫자 유형에만 가능합니다.

1

는 "EJB3"를 확인하거나 설정에 추가해야합니다

<hbm2java jdk5="true" ejb3="true" /> 
관련 문제