2010-04-09 12 views
12

मैं निम्नलिखित कोड है:हाइबरनेट स्कीमा पैरामीटर @SequenceGenerator एनोटेशन में काम नहीं करता

@Entity 
@Table(name = "my_table", schema = "my_schema") 
@SequenceGenerator(name = "my_table_id_seq", sequenceName = "my_table_id_seq", 
        schema = "my_schema") 
public class MyClass { 
    @Id 
    @GeneratedValue(generator = "my_table_id_seq", 
        strategy = GenerationType.SEQUENCE) 
    private int id; 

} 

डेटाबेस: Postgresql 8.4, एनोटेशन हाइबरनेट 3.5.0-फाइनल।

जब MyClass का उद्देश्य यह निम्न SQL क्वेरी उत्पन्न की बचत:

select nextval('my_table_id_seq') 

तो वहाँ कोई स्कीमा उपसर्ग और इसलिए अनुक्रम नहीं पाया जा सकता है है। जब मैं अनुक्रम लिखता हूं

sequenceName = "my_schema.my_table_id_seq" 

सब कुछ काम करता है।

क्या मुझे स्कीमा पैरामीटर के अर्थ के लिए गलतफहमी है या क्या यह एक बग है? स्कीमा पैरामीटर काम करने के लिए कोई विचार कैसे?

+0

मैं एक ही समस्या यहाँ था और अनुक्रम नाम पर स्कीमा शब्दों में कहें, जैसे तुमने किया था। मेरा @ सिकेंस जेनरेटर में स्कीमा प्रॉपर्टी नहीं है। – BrunoJCM

उत्तर

0

हममम, मैं बहुत हाइबरनेट के आंतरिक भागों के साथ काम नहीं करते हैं लेकिन वहाँ कुछ जानकारी यहाँ है:

https://forum.hibernate.org/viewtopic.php?p=2406761

तुम भी ALTER उपयोगकर्ता के माध्यम से PostgreSQL से कनेक्ट होने में उपयोगकर्ता के लिए डिफ़ॉल्ट स्कीमा सेट कर सकते हैं। .. सेट SEARCH_PATH

1

यह एक बग की तरह लगता है: जेपीए प्रदाता 'नई' (के बाद से जावा हठ 2.0) schema और catalog@SequenceGenerator एनोटेशन की विशेषताओं का सम्मान करना चाहिए। मैं a Jira issue बढ़ाने के लिए सुझाव देता हूं (एनोटेशन और इकाई प्रबंधक परियोजनाएं अब कोर के अंतर्गत हैं), कोई मौजूदा नहीं मिला।

-5

हैलो मैं एक ही समस्या

होने लेकिन अद्यतन करें और चलाने के लिए अपने hibernate.hbm2ddl.auto स्थापित किया गया था।

<property name="hibernate.hbm2ddl.auto">update</property> 
+1

मुझे पता है कि इस तथ्य के बाद यह तरीका है, लेकिन यह जवाब गलत है क्योंकि यह केवल डिफ़ॉल्ट स्कीमा में जेनरेटर बना देगा, जो शायद आप इसे नहीं चाहते हैं। – Jim

6

वही समस्या, मेरे लिए एक बग की तरह दिखती है। हाइबरनेट 3.6.7 स्रोत कोड मैं एक विधि org.hibernate.cfg.annotations.reflection.JPAOverridenAnnotationReader#buildSequenceGeneratorAnnotation(Element element) कि name, sequence-name, initial-value और allocation-size विशेषताओं के मान नकल करने लगता है देखने को देखते हुए का उपयोग कर मैं, लेकिन मैं करने के लिए catalog या schema

मैं उम्मीद नहीं संदर्भ देखें विधि getTable(Element tree, XMLContext.Default defaults) (एक ही कक्षा के) के अनुरूप जो कुछ

annotation.setValue("schema", table.schema()); 
annotation.setValue("catalog", table.catalog());` 

या buildTableGeneratorAnnotation जो

copyStringAttribute(ad, element, "catalog", false); 
copyStringAttribute(ad, element, "schema", false); 
को देखने के लिए

तो, यहां तक ​​कि अगर थोड़ा हैकिश भी हो, तो इस संस्करण के लिए कम से कम तरीका - जैसा कि आप कहते हैं sequenceName उपसर्ग कर रहा है।

0

पीओजेओ की कक्षा घोषणा से अनुक्रम जेनरेटर एनोटेशन को आईडी फ़ील्ड घोषणा पर ले जाने का प्रयास करें। हाइबरनेट 3.6 के साथ।4 इस

@Entity 
@Table(name = "my_table", schema = "my_schema") 
public class MyClass { 
    @Id 
    @GeneratedValue(generator = "my_table_id_seq", 
       strategy = GenerationType.SEQUENCE) 
    @SequenceGenerator(name = "my_table_id_seq", sequenceName = "my_table_id_seq", schema = "my_schema") 
    private int id; 

} 

MySQL

create table my_schema.my_table_id_seq (
    next_val bigint 
); 

insert into my_schema.my_table_id_seq values (1); 

के लिए इस पैदा करता है और इस PostgreSQL

create sequence my_schema.my_table_id_seq start 1 increment 50; 
के लिए
1

एक ही समस्या है, हाइबरनेट 4.3.6.Final, स्प्रिंग 4.1.4.RELEASE साथ उपयोग करते हुए, ओरेकल डेटाबेस 11 जी एंटरप्राइज़ संस्करण रिलीज 11.2.0.1.0 पर।

लगता है कि यह है की तरह एक बग =>https://hibernate.atlassian.net/browse/HHH-7232

हम एक पर्याय स्कीमा बी में अनुक्रम के लिए एक ओर इशारा करते स्कीमा में बनाने यह पर्याय है कि हम क्या @SequenceGenerator की स्कीमा विशेषता में प्रयोग किया जाता था द्वारा समस्या के समाधान मिल गया एनोटेशन

+0

कथित तौर पर संस्करण 5.x में तय किया गया है: https://hibernate.atlassian.net/browse/HHH-7232?focusedCommentId=74395&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-74395 –

4

मेरे वैकल्पिक हल इस तरह दिखता है (जेपीए 2.1, हाइबरनेट 4.3.8.Final, PostgreSQL 9.4):

@SequenceGenerator(name = "seq_name", sequenceName = "my_schema.seq_name", schema = "my_schema", allocationSize = 1, initialValue = 1) 
संबंधित मुद्दे