2011-01-21 15 views
5

के लिए एनोटेशन नहीं जोड़ता है मेरे पास मेरा MySQL डीबी स्कीमा बनाया गया है और मैं एनोटेटेड डोमेन ऑब्जेक्ट (.java) बनाने के लिए हाइबरनेट रिवर्स इंजीनियरिंग फ़ाइल का उपयोग कर रहा हूं। हालांकि फ़ाइल सही ढंग से जेनरेट की गई है, यह किसी भी तरह आईडी फ़ील्ड के लिए "जेनरेटर" एनोटेशन गायब है।हाइबरनेट टूल रिवर्स इंजीनियरिंग उपकरण जनरेटर

<?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.reveng.xml है या हाइबरनेट "जनरेटर" के लिए एनोटेशन उत्पन्न नहीं करता है?

+0

कुछ खोज के बाद, मैं कुछ मदद पीछा किया और निम्नलिखित सुधार किए: 2) निरुपित AUTO_INCREMENT पूर्णांक पर 1) अपडेट किया गया product_id db स्तंभ डेटा प्रकार विशेषता। अब उपकरण डोमेन जेनरेटर (Products.java) में मूल जनरेटर के लिए एनोटेशन उत्पन्न करने में सक्षम है जैसे "@GeneratedValue"। मुझे अभी भी यह जांचना है कि यह केवल आईएनटी कॉलम के लिए या अन्य डेटा प्रकारों के साथ कॉलम के लिए भी काम करता है और इसे VARCHAR कॉलम के लिए कैसे काम करना है। – mayur

उत्तर

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

यहां कोई समस्या है। यह हिस्सा सही है: key-column name="product_id", यह डीबी कॉलम product_id पर नक्शा करता है, लेकिन यह हिस्सा गलत है: property="product_id", यह जावा प्रॉपर्टी है और इसे productId कहा जाता है, product_id नहीं। यह सही मूल्य है:

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

और हाँ: AFAIK ऑटो-जनरेशन केवल संख्यात्मक प्रकारों के लिए संभव है।

1

आप "EJB3" की जाँच करें या config में जोड़ने की जरूरत:

<hbm2java jdk5="true" ejb3="true" /> 
संबंधित मुद्दे