2010-06-17 4 views
7

मेरे सभी संस्थाओं @Idओरेकल 10 जी बोली के साथ हाइबरनेट का उपयोग करके जेपीए के साथ हाइबरनेट_यूजेंस नामक एक अनुक्रम क्यों बनाया जा रहा है?

@Id 
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "MYENTITY_SEQ") 
@SequenceGenerator(name = "MYENTITY_SEQ", sequenceName = "MYENTITY_SEQ") 
@Column(name = "MYENTITY", nullable = false) 
private Long id; 

या

@Id 
@Column(name = "MYENTITY") 

मुझे लगता है कि एक Oracle अनुक्रम hibernate_sequence नामित हमेशा बनाई गई है के इस प्रकार का उपयोग करें। ऐसा क्यों है? और मैं इससे कैसे बच सकता हूं?

मैं जेपीए 1 का उपयोग हाइबरनेट 3 और ओरेकल 10 जी बोली के साथ कर रहा हूं।

public void configure(Type type, Properties params, Dialect dialect) throws MappingException { 
    ObjectNameNormalizer normalizer = (ObjectNameNormalizer) params.get(IDENTIFIER_NORMALIZER); 
    sequenceName = normalizer.normalizeIdentifierQuoting(
      PropertiesHelper.getString(SEQUENCE, params, "hibernate_sequence") 
    ); 
    parameters = params.getProperty(PARAMETERS); 

    if (sequenceName.indexOf('.') < 0) { 
     final String schemaName = normalizer.normalizeIdentifierQuoting(params.getProperty(SCHEMA)); 
     final String catalogName = normalizer.normalizeIdentifierQuoting(params.getProperty(CATALOG)); 
     sequenceName = Table.qualify(
       dialect.quote(catalogName), 
       dialect.quote(schemaName), 
       dialect.quote(sequenceName) 
     ); 
    } 
    else { 
     // if already qualified there is not much we can do in a portable manner so we pass it 
     // through and assume the user has set up the name correctly. 
    } 

    this.identifierType = type; 
    sql = dialect.getSequenceNextValString(sequenceName); 
} 

कहाँ PropertiesHelper.getString(String, Properties, String) के तीसरे पैरामीटर सामान्य प्रॉपर्टी मूल्य है:

+1

क्या आप वाकई किसी @ एंटिटी के आईडी में कोई विशेषता के बिना @GeneratedValue() के साथ एनोटेट घोषित की जरूरत नहीं है कर रहे हैं ??? –

उत्तर

-3

मुझे संदेह है क्योंकि मैं हाइबरनेट एवर का उपयोग कर रहा हूं क्योंकि मैंने अपनी इकाइयों की दोबारा जांच की है और उनमें से सभी के पास सही @Id मैपिंग है।

+4

और इसके लिए समाधान क्या था? – cachiama

4

मैं org.hibernate.id.SequenceGenerator में निम्न कोड देखें।

तो मुझे यह कहने का मोह है कि, कहीं, आपके पास Id "ठीक से" एनोटेटेड नहीं है। शायद आपको थोड़ा डीबगिंग सत्र करना चाहिए।

9

HIBERNATE_SEQUENCE का उपयोग संशोधन संख्या बनाने के लिए REVINFO-इकाई के साथ किया जाता है। यदि आप विभिन्न अनुक्रम का उपयोग करना चाहते हैं तो आपको अपनी कस्टम संशोधन इकाई बनाना चाहिए।

उस के साथ

सहायता: http://docs.jboss.org/hibernate/envers/3.5/reference/en-US/html/revisionlog.html

संबंधित मुद्दे