2011-01-21 25 views
5

Tôi đã tạo MySQL DB Schema và đang sử dụng tệp Hibernate Reverse Engineering để tạo đối tượng tên miền được chú thích (.java). Mặc dù tệp được tạo chính xác, nhưng bằng cách nào đó, thiếu chú thích "Trình tạo" cho trường ID.HibernateTools Công cụ Reverse Engineering không thêm Chú thích cho máy phát điện

Dưới đây là hibernate.reveng.xml tôi:

<?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> 

và các tập tin lớp được tạo ra (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; 
} 

} 

Có cái gì đó thiếu trong tập tin hibernate.reveng.xml của tôi hoặc hibernate không tạo chú thích cho "máy phát điện"?

+0

Sau khi một số tìm kiếm, tôi theo một số giúp đỡ và tạo điều chỉnh như sau: 1) Cập nhật product_id kiểu dữ liệu cột db để INT 2) Phân AUTO_INCREMENT thuộc tính. Bây giờ công cụ này có thể tạo chú thích cho Native Generator như "@GeneratedValue" trong Domain Object (Products.java). Tôi vẫn phải kiểm tra xem điều này chỉ hoạt động cho các cột INT hay cho các cột với các kiểu dữ liệu khác và làm thế nào để nó hoạt động cho các cột VARCHAR. – mayur

Trả lời

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

Có sự cố ở đây. Phần này là chính xác: key-column name="product_id", nó ánh xạ tới cột DB product_id, nhưng phần này sai: property="product_id", đây là thuộc tính Java và được gọi là productId, không phải là product_id. Đây là giá trị chính xác:

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

Và có: Tự động tạo AFAIK chỉ có thể cho các loại số.

1

bạn cần phải kiểm tra "EJB3" hoặc thêm trong cấu hình:

<hbm2java jdk5="true" ejb3="true" /> 
Các vấn đề liên quan