मैं उम्मीद कर रहा हूं कि अधिक से अधिक ईबीन विशेषज्ञता वाले किसी व्यक्ति को मुझे एक अनियमित समस्या से मदद मिल सकती है, अब मैं समस्या निवारण कर रहा हूं।ईबीन - गतिशील क्वेरी - तैयार वक्तव्य की बेमेल पैरामीटर गणना त्रुटि
पर्यावरण:
- जावा 1.7.0_17
- MySQL 5.5
- प्ले फ्रेमवर्क 2.1.1 (हालांकि मैं 2.2.1 प्ले में अपग्रेड किया है और इस समस्या को अभी भी अस्तित्व में)
मेरी मुख्य समस्या यह है कि जब मैं Play को पुनरारंभ करता हूं तो मुझे वैकल्पिक SQLExceptions मिल रहा है, सभी को ईबीन बना रहे तैयार कथन में बहुत अधिक या बहुत कम पैरामीटर के साथ करना है। डेटा सेट एक समय का आधा काम करता है जब डेटा सेट बी विफल रहता है, लेकिन जब प्ले को पुनरारंभ करते हैं, डेटा सेट बी काम करता है जबकि डेटा सेट ए विफल रहता है।
मैं एक फ़ंक्शन में पारित फ़िल्टर ऑब्जेक्ट्स के सेट के आधार पर गतिशील रूप से एक ईबीन क्वेरी ऑब्जेक्ट का निर्माण कर रहा हूं। ईबीन क्वेरी सभी वस्तुओं को ढूंढ रही है जो प्रत्येक फ़िल्टर की दी गई आवश्यकताओं को पूरा करती हैं।
private List<Contact> contacts getContacts(Set<Filter> filters) {
Query<Contact> query = Contact.find;
for (Filter filter : filters) {
filter.apply(query);
}
List<Contact> contacts = query.findList();
}
एक फिल्टर का एक उदाहरण::
समारोह के समान है
public void apply(Query<Contact> query) {
query.where().in("tags", getTags());
}
पहले, क्वेरी इमारत के इस प्रकार Ebean में समर्थित है बंद? मेरा मानना है कि यह ज्यादातर समय काम करता है, हालांकि, मुझे कुछ डेटा के साथ "getContacts" फ़ंक्शन को कई सौ बार चलाने में समस्याएं मिलती हैं, लेकिन केवल कभी-कभी ...
तो इस समस्या के रूप में मेरे साथ रहें बेहद उलझन में है। मैं वास्तव में डेटा के बारे में अधिकतर विवरणों पर नजर डालने जा रहा हूं, लेकिन यदि आप अधिक जानकारी चाहते हैं/चाहते हैं, तो कृपया पूछें।
डाटा एक के प्रश्न और अपवाद सेट:
select distinct t0.contact_id c0, t0.contact_uuid c1, t0.bounce c2
from contact t0
join email_record u1 on u1.contact_id = t0.contact_id
join contact_tag u2z_ on u2z_.contact_id = t0.contact_id
join tag u2 on u2.tag_id = u2z_.tag_id
where u1.status = ? and t0.unit_id = ? and u2.tag_id in (?,?,?) and t0.unit_id in (?) and t0.campaign_id in (?,?,?,?,?,?,?,?,?,?,?,?)
[PersistenceException: Error with property[19] dt[4]data[1464][java.lang.Integer]]
Caused by: java.sql.SQLException: Parameter index out of range (19 > number of parameters, which is 18).
फिर एक प्ले पुनः प्रारंभ करने पर, डेटा बी के प्रश्न और अपवाद सेट:
[PersistenceException: Query threw SQLException:No value specified for parameter 19 Bind values:[SENT, 1290, 8988, 13032, 13052, 1290, 96, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 222] Query was: select distinct t0.contact_id c0, t0.contact_uuid c1, t0.bounce c2 from contact t0 join email_record u1 on u1.contact_id = t0.contact_id join contact_tag u2z_ on u2z_.contact_id = t0.contact_id join tag u2 on u2.tag_id = u2z_.tag_id where u1.status = ? and t0.unit_id = ? and u2.tag_id in (?,?) and t0.unit_id in (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) and t0.campaign_id in (?,?,?,?,?,?,?,?,?,?,?,?) ]
मुझे लगता है कि इस बारे में सबसे हैरान टुकड़ा है कि यह कैसे है स्विच, फिर से शुरू होने पर विश्वसनीय रूप से 100% समय।
क्या किसी ने कभी ऐसा कुछ देखा है? भ्रम में जोड़ने के लिए, यह अतिरिक्त रूप से हमारे उत्पादन वातावरण पर कुछ समान (विभिन्न डेटा सेटों पर) कर रहा है, लेकिन मैं डेटाबेस को डंप करने और स्थानीय रूप से लोड करने के बाद भी इसे अपने विकास या परीक्षण मशीनों पर पुन: उत्पन्न नहीं कर सकता। हालांकि ऊपर वर्णित समस्या हर जगह पुन: उत्पन्न होती है।
ऐसा लगता है कि यह ईबीन में एक बग है जिसे हम अभी काम कर रहे हैं: https://github.com/ebean-orm/avaje-ebeanorm/issues/60 – jcreason
क्या यह अभी भी एक मुद्दा है? हमें शायद इस सवाल का जवाब देना चाहिए और इसे बंद करना चाहिए। – avgvstvs
मैं इसे हल करने में कभी सक्षम नहीं था, और रॉब से पहले इस मुद्दे के आसपास काम किया था कि रॉबिन ईबेन परियोजना को ठीक कर रहा है। – jcreason