पर कोई प्रभाव नहीं पड़ता है मेरे पास एक प्ले फ्रेमवर्क 2.0.4 एप्लिकेशन है जो डीबी में पंक्तियों को संशोधित करना चाहता है।प्लेफ्रेमवर्क 2 + ईबीन - कच्चे एसक्यूएल अपडेट क्वेरी - डीबी
मैं (संदेशों को पढ़ने) मैं इसे पसंद
नीचेString sql = " UPDATE message SET opened = true, opened_date = now() "
+" WHERE id_profile_to = :id1 AND id_profile_from = :id2 AND opened IS NOT true";
SqlUpdate update = Ebean.createSqlUpdate(sql);
update.setParameter("id1", myProfileId);
update.setParameter("id2", conversationProfileId);
int modifiedCount = update.execute();
मैं PostgreSQL सभी प्रश्नों लॉग इन करने को संशोधित किया है किया स्थिति "खोला" करने के लिए DB में 'कुछ' संदेशों को अद्यतन करने की जरूरत है।
संशोधित गणना संशोधित पंक्तियों की वास्तविक संख्या है - लेकिन क्वेरी लेनदेन में है। डीबी में क्वेरी करने के बाद रोलबैक है - इसलिए अद्यतन नहीं किया गया है। मैंने उसी परिणाम के साथ डीबी को एच 2 में बदलने की कोशिश की है।
यह postgres ऑडिट लॉग
2012-12-18 00:21:17 CET : S_1: BEGIN
2012-12-18 00:21:17 CET : <unnamed>: UPDATE message SET opened = true, opened_date = now() WHERE id_profile_to = $1 AND id_profile_from = $2 AND opened IS NOT true
2012-12-18 00:21:17 CET : parameters: $1 = '1', $2 = '2'
2012-12-18 00:21:17 CET : S_2: ROLLBACK
से क्वेरी ..........
प्ले फ्रेमवर्क दस्तावेज और Ebean डॉक्स है - कहा गया है कोई लेन-देन नहीं है/अगर घोषित नहीं या प्रति पूछताछ यदि आवश्यक है /।
तो ... मैं चाल
Ebean.beginTransaction();
int modifiedCount = update.execute();
Ebean.commitTransaction();
Ebean.endTransaction();
Logger.info("update mod = " + modifiedCount);
बना दिया है लेकिन इस कोई फर्क नहीं पड़ता - एक ही व्यवहार ...
Ebean.execute(update);
फिर से - एक ही ..
अगला चरण मैंने किया - मैंने
@Transactional(type=TxType.NEVER)
के साथ विधि को नाराज किया
और
@Transactional(type=TxType.MANDATORY)
उनमें से कोई भी कोई फर्क नहीं पड़ता।
मैं, Ebean साथ :( किसी मदद कर सकते हैं तो निराश हूँ कृपया
BTW मैं
Ebean.getServer(null).getAdminLogging().setDebugGeneratedSql(true);
Ebean.getServer(null).getAdminLogging().setDebugLazyLoad(true);
Ebean.getServer(null).getAdminLogging().setLogLevel(LogLevel.SQL);
सेट प्ले कंसोल में क्वेरी को देखने के लिए -। अन्य प्रश्नों लॉग इन कर रहे - इस अद्यतन - नहीं
मैं एक ऐसी ही समस्या थी, और इस एक ने मेरे लिए हल किया! – adis
महान संकेत! बेवकूफ समस्या ... –