मुझे एक समस्या है जहां मैं किसी ऑब्जेक्ट को जारी या मर्ज नहीं कर सकता जिसमें केवल एक आईडी और अन्य ऑब्जेक्ट्स का संग्रह होता है। यदि मैं एक और क्षेत्र जोड़ता हूं तो यह लेनदेन को सामान्य के रूप में प्रतिबद्ध करेगा। इसके अलावा, अगर मैं आईडी उत्पादन नीति को ऑटो में बदलता हूं तो यह भी काम करेगा।एक ऐसी संस्था को कैसे बनाए रखें जिसमें केवल एक संग्रह और आईडी हो?
मेरी बाकी टीम "ऑटो" के बजाय "पहचान" का उपयोग करती है, इसलिए मैं उनके साथ संगत होना चाहता हूं। उनकी संस्थाएं सिर्फ एक आईडी + संग्रह से अधिक हैं, इसलिए यह उनके लिए ठीक काम करती है। निम्नलिखित मैं क्या बनाना चाहते है काम:
@Entity
public class Filter implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@OneToMany(fetch = FetchType.EAGER, orphanRemoval = true, cascade = { CascadeType.ALL })
private ArrayList<Rule> rules = new ArrayList<>();
public Filter() {
}
}
त्रुटिसंदेश:
org.apache.openjpa.persistence.PersistenceException: ERROR: syntax error at or near ")"
Position: 25 {prepstmnt 693640431 INSERT INTO Filter() VALUES()} [code=0, state=42601]
FailedObject: [email protected]
अनिवार्य रूप से, के बाद से यह सिर्फ एक आईडी है और एक टेबल में शामिल हों, यह मर जाता है जब जारी रहती है या फ़िल्टर मर्ज करने का प्रयास बिना किसी खेतों के।
समाधान
GenerationType.IDENTITY GenerationType.AUTO को बदलें।
-इस केवल चोर तो यह मेज पर से 1.
GenerationType बदलें बढ़ाने शुरू होता है
-यह क्या ऑटो प्रतीत हो रहा है, कि प्रारंभिक शुरू कर प्राथमिक कुंजी 50 से आस-पास जाएं प्रतीत हो रहा है उठाया।
इकाई के लिए एक मनमाना क्षेत्र जोड़ें (यानी, स्ट्रिंग परीक्षण = "परीक्षण")।
- बस इकाई बनाने के लिए एक और क्षेत्र बना रहता है। हालांकि, मुझे इस क्षेत्र की आवश्यकता नहीं है; मुझे बस एक संग्रह चाहिए
संबंधों को द्विपक्षीय बनाएं।
- संबंधों को द्विपक्षीय बनाने के द्वारा, तालिकाओं में एक आईडी वापस जा रही है (केवल आईडी होने के बजाय)। यह केवल काम करता है क्योंकि फ़िल्टर का एक और रिकॉर्ड स्वामित्व है।
यदि आपका जेपीए प्रदाता कोई कॉलम के साथ INSERT स्टेटमेंट रखने का समर्थन नहीं करता है तो उस पर एक बीयूजी उठाएं। मैं प्रदाता के साथ ऐसा करता हूं (डेटा न्यूक्लियस) और यह सही एसक्यूएल उत्पन्न करता है। –
ऑटो का उपयोग करना वास्तव में एक उत्तर नहीं है क्योंकि ऑटो का मतलब प्रदाता को छोड़ने की रणनीति है, और वे केवल उसी समस्या के साथ समाप्त होने वाले कवर के तहत पहचान का उपयोग कर सकते हैं। –
लेखक से हटाया गया – garfield