2011-11-24 8 views
5

जब मैं यूनिटऑफवर्क के माध्यम से मूल्य डालता हूं तो एक्लिप्सलिंक और डर्बी ऑटो-इक्रेशन कॉलम के बीच एक समस्या प्रतीत होती है।डर्बी ऑटो-एन्हांसमेंट और एक्लीपसेलिंक यूनिटऑफवर्क

SessionFactory sessionFactory = new SessionFactory("default"); 
Session session = sessionFactory.getSharedSession(); 
UnitOfWork uow = session.acquireUnitOfWork(); 
SysUser usr2 = new SysUser(); 
usr2.setUserName("test"); 
usr2.setUserPassword("test"); 
uow.registerObject(usr2); 
uow.commit(); 

यहाँ एसक्यूएल Eclipselink उत्पन्न है: "। एक पहचान स्तंभ 'DB_ID' को संशोधित करने का प्रयास"

INSERT INTO APP.SYS_USER (DB_ID, CREATED, STATUS, USER_NAME, USER_PASSWORD) VALUES (?, ?, ?, ?, ?) bind => [0, null, null, testinsert, test] 

परिणाम एक में अपवाद।

यहाँ एसक्यूएल मैं चाहता हूँ यह उत्पन्न है:

INSERT INTO APP.SYS_USER (USER_NAME, USER_PASSWORD) VALUES (?, ?) bind => [testinsert, test] 

मैं INSERT INTO SYS_USER(USER_NAME, USER_PASSWORD) VALUES('tesetinsert2', 'test') की कोशिश की है और यह अच्छी तरह से काम करता है।

क्या कोई नक्शा फ़ाइल xml है या कोई समस्या इस समस्या को हल करती है या क्या मैं उन शून्य मान को छोड़ने के लिए डर्बी को कॉन्फ़िगर कर सकता हूं?

संपादित:

CREATE TABLE SYS_USER ( 
    "DB_ID" INTEGER NOT NULL DEFAULT AUTOINCREMENT: start 1 increment 1 , 
    "USER_NAME" VARCHAR(64) NOT NULL , 
    "USER_PASSWORD" VARCHAR(64) NOT NULL , 
    "STATUS" VARCHAR(64) DEFAULT 'ACTIVE' , 
    "CREATED" TIMESTAMP DEFAULT current_timestamp 
    , CONSTRAINT "SQL110614114038650" PRIMARY KEY ("DB_ID")); 

संपादित:

@Table(name = "SYS_USER") 
@Entity 
public class SysUser implements Serializable { 
    @Column(name = "DB_ID") 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    @Id 
    private int dbId; 

समाधान "एंटिटी प्रबंधक" के बदले "कार्य की इकाई का उपयोग करें: यहां इकाई का हिस्सा है यहां मेज है "। ऐसा लगता है कि UnitOfWork डर्बी के ऑटो-वृद्धि कॉलम का समर्थन नहीं करता है।

मैं इसके लिए अपना स्वयं का समाधान स्वीकार नहीं कर रहा हूं यह UnitOfWork के साथ सीधा समाधान नहीं है। किसी के पास यह वही समस्या हो सकती है और मैं यह जानना चाहता हूं कि यह यूनिटऑफवर्क का एक बीयूजी है या सिर्फ खराब दस्तावेज है।

उत्तर

1

एक्लिप्ससेंक मूल एपीआई (यूनिटऑफवर्क) का उपयोग करके डर्बी और उत्पन्न आईडी के संबंध में जेपीए के समान काम करना चाहिए। सुनिश्चित करें कि आपने फ़ील्ड को अपने वर्णनकर्ता में अनुक्रमण का उपयोग करने के रूप में घोषित किया है और अपना प्लेटफ़ॉर्म डर्बी पर सेट किया है और मूल अनुक्रम सेट किया है।

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