2013-01-15 12 views
7

हम 4.1.9 के लिए संस्करण 3.6 से हाइबरनेट उन्नयन की एक विधा में हैं और मैं एक त्रुटि का सामना करना पड़ रहाहाइबरनेट 4 - getGeneratedKeys() समर्थन सक्षम नहीं है

[# | 2013-01-14T18: 33 : 46.519 + 0530 | INFO | glassfish3.1.1 | javax.enterprise.system.std.com.sun.enterprise.server.logging | _ThreadID = 122; _ThreadName = थ्रेड -3; | 2013-01-14 18: 33: 46,518 [http-thread-pool-8080 (5)] त्रुटि envId {} - sesId {} - com.spmsoftware.webframework.exception.ExceptionHandlerUtil [31] - अनचाहे अपवाद! org.hibernate.AssertionFailure: getGeneratedKeys() समर्थन को org.hibernate.engine.jdbc.internal.StatementPreparerImpl.checkAutoGeneratedKeysSupportEnabled (StatementPreparerImpl.java:93) ~ [hibernate-core-4.1.9.Final.jar: 4.1.9. फाइनल] org.hibernate.engine.jdbc.internal.StatementPreparerImpl.prepareStatement (StatementPreparerImpl.java:112) ~ [हाइबरनेट-कोर-4.1.9.फिनल.जर: 4.1.9.फिनल] पर org.hibernate.id.SequenceIdentityGenerator $ Delegate.prepare (अनुक्रम IdentityGenerator.java:106) ~ [हाइबरनेट-कोर-4.1.9.फिनल.जर: 4.1.9.फिनल] org.hibernate.id.insert.AbstractReturningDelegate पर। प्रदर्शन करें (सारस्ट्रेटिंग डीलेगेट.जावा:55) ~ [हाइबरनेट-कोर-4.1.9.फिनल.जर: 4.1.9.फिनल] org.hibernate.persister.entity.AbstractEntityPersister.insert (AbstractEntityPersister.java:2936) ~ [ hiber nate-core-4.1.9.Final.jar: 4.1.9.Final] org.hibernate.persister.entity.AbstractEntityPersister.insert (AbstractEntityPersister.java:3447) ~ [hibernate-core-4.1.9.Final। जार: 4.1.9.फिनल] org.hibernate.action.internal.EntityIdentityInsertAction.execute (EntityIdentityInsertAction.java:81) ~ [हाइबरनेट-कोर-4.1.9.फिनल.जर: 4.1.9.फिनल] पर org.hibernate.engine.spi.ActionQueue.execute (ActionQueue.java:362) ~ [हाइबरनेट-कोर-4.1.9.फिनल.जर: 4.1.9.फिनल] org.hibernate.engine.spi.ActionQueue पर। addResolvedEntityInsertAction (ActionQueue.java:203) ~ [हाइबरनेट-कोर-4.1.9.फिनल.जर: 4.1.9.फिनल] org.hibernate.engine.spi.ActionQueue.addInsertAction (ActionQueue.java:183) ~ [ हाइबरनेट-कोर-4.1.9.फिनल.जर: 4.1.9.फिनल] org.hibernate.engine.spi.ActionQueue.addAction (ActionQueue.java:167) ~ [हाइबरनेट-कोर- 4.1.9.फिनल.जर: 4.1.9.फिनल] org.hibernate.event.internal.AbstractSaveEventListener.addInsertAction (AbstractSaveEventListener.java:320) ~ [हाइबरनेट-कोर-4.1.9.फिनल.जर: 4.1। 9। फाइनल] org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate (AbstractSaveEventListener.java:287) ~ [हाइबरनेट-कोर-4.1.9.फिनल.जर: 4.1.9.फिनल] org.hibernate पर। event.internal.AbstractSaveEventListener.performSave (AbstractSaveEventListener.java:193) ~ [हाइबरनेट-कोर-4.1.9.फिनल.जर: 4.1.9.फिनल] org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId (सारससेवइवेंट लिस्टनर। जावा: 126) ~ [हाइबरनेट-कोर-4.1.9.फिनल.जर: 4.1.9.फिनल] org.hibernate.ejb.event.EJB3PersistEventListener.saveWithGeneratedId (EJB3PersistEventListener.java:78) ~ [hibernate-entitymanager- 4.1.9.फिनल .jar: 4.1.9.फिनल] org.hibernate.event.internal.DefaultPersistEventListener.entityIsTransient (DefaultPersistEventListener.java:208) ~ [हाइबरनेट-कोर-4.1.9.फिनल.जर: 4.1.9.फिनल] org.hibernate.event.internal पर। DefaultPersistEventListener.onPersist (DefaultPersistEventListener.java:151) ~ [हाइबरनेट-कोर-4.1.9.फिनल .jar: 4.1.9.फिनल] org.hibernate.event.internal.DefaultPersistEventListener.onPersist (DefaultPersistEventListener.java:78) पर ~ [हाइबरनेट-कोर-4.1.9.फिनल.जर: 4.1.9.फिनल] org.hibernate.internal.SessionImpl.firePersist (सत्र Impl.java:843) ~ [hibernate-core-4.1.9.Final। जार: 4.1.9.फिनल] org.hibernate.internal.SessionImpl.persistist (सत्र Impl.java:818) ~ [हाइबरनेट-कोर-4.1.9.फिनल.जर: 4.1.9.फिनल] संगठन में। hibernate.internal.SessionImpl.persistist (सत्र Impl.java:822) ~ [हाइबरनेट-कोर-4.1.9.फिनल.जर: 4.1.9.फिनल] org.hibernate.ejb.AbstractEntityManagerImpl.persist (AbstractEntityManagerImpl.java:865) ~ [hibernate-entitymanager-4.1.9.Final.jar: 4.1.9।अंतिम]

यह त्रुटि में देखा जाता है जब मैं एक हाइबरनेट इकाई जो निम्नलिखित परिभाषा

@Entity 
@Table(name = "ACCESS") 
@GenericGenerator(name = "auth-generator", 
    strategy = "sequence-identity", 
    parameters = @org.hibernate.annotations.Parameter(name = "sequence", value = "ACCESS_SEQ")) 
public class Access implements Identifiable { 
    private Long id; 

    @Id 
    @GeneratedValue(generator = "auth-generator") 
    @Column(name = "ROW_IDENTIFIER", nullable = false) 
    public Long getId() { 
     return id; 
    } 
} 

है 3.6 के लिए हाइबरनेट स्रोत कोड की तुलना पर मैंने देखा बने रहने की कोशिश है कि जब SequenceIdentityGenerator हाइबरनेट के लिए एक तैयार बयान बनाने "hibernate.jdbc.use_get_generated_keys" (सारबैचर - 506) और संस्करण 4.1.9 के लिए जांच नहीं करता है (यह स्टेटमेंटपेरेयरआईएमपीएल - 112) करता है।

इसके कारण, हमारा आवेदन अपग्रेड पर विफल रहता है। इस परिवर्तन के पीछे कारण क्या है इस पर कोई विचार?

उत्तर

11

मैं एक ही मुद्दे में फंस गया था। अंत में एक रास्ता पता चला। इस लाइन को अपनी hibernate.cfg.xml फ़ाइल में रखें।

<property name="hibernate.jdbc.use_get_generated_keys">true</property> 

और संदर्भ और उस के लिए विवरण में पाया जा सकता:

http://www.jarvana.com/jarvana/view/hibernate/hibernate/3.0.2/hibernate-3.0.2-sources.jar!/org/hibernate/jdbc/AbstractBatcher.java?format=ok

+0

यह वास्तव में समाधान है। धन्यवाद! – Withheld

+2

वसंत बूट ऐप्स के लिए यह 'spring.jpa.properties.hibernate.jdbc.use_get_generated_keys: सत्य' गुण गुण फ़ाइल में सेट किया जा सकता है – Deepu

+0

Grails ऐप्स के लिए - DataSource.groovy 'hibernate.jdbc.use_get_generated_keys = true' – argoden

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