आपका जोंस कन्वर्टर पूरी इकाई को क्रमबद्ध करने का प्रयास करता है, जिसमें प्रत्येक भाषा बोलने वाले सभी रोगियों की सूची होती है। मैंने जो समझा, उससे जोंस में रोगी की सूची अपेक्षित नहीं है। तो आपके पास तीन विकल्प हैं (आदेश दिया गया है जिसमें मैं उन पर विचार करूंगा):
- भाषा निकाय में रोगियों के लिए मैपिंग निकालें। क्या आपको भाषा इकाई से रोगियों तक पहुंच प्राप्त करने की आवश्यकता है? अगर इस मैपिंग को नहीं हटाते हैं।
- एक भाषा डीटीओ बनाएं जहां आप tx परत से बाहर निकलने से पहले अपना डेटा स्थानांतरित करते हैं। इस तरह जो कोई भी सेवा को कॉल करता है उसे कभी भी LazyInitException नहीं मिलेगा। कोई आश्चर्य नहीं :डीटीओ फ़ील्ड हमेशा उत्सुकता से सेट होते हैं।
- रोगी फ़ील्ड को क्रमबद्ध न करने के लिए अपने json कनवर्टर को कॉन्फ़िगर करें। आपने यह नहीं कहा है कि आप किस जेसन लिब का उपयोग कर रहे हैं। उनमें से कुछ आपको कुछ क्षेत्रों को अनदेखा करने के लिए एक टिप्पणी देते हैं (
@JsonIgnore
उदाहरण के लिए जैक्सन के लिए), अन्य को जावा कॉन्फ़िगरेशन की आवश्यकता है।
पहला समाधान लागू करने के लिए, उन फ़ाइलों को इस तरह से अपडेट करें:
Language.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!-- Generated Sep 14, 2016 4:33:23 PM by Hibernate Tools 4.3.1 -->
<hibernate-mapping>
<class name="beans.Language" table="language" catalog="myglukose" optimistic-lock="version">
<id name="idlanguage" type="java.lang.Integer">
<column name="idlanguage" />
<generator class="identity" />
</id>
<property name="language" type="string">
<column name="language" length="45" not-null="true" />
</property>
</class>
</hibernate-mapping>
भाषा.जावा
public class Language implements java.io.Serializable {
private Integer idlanguage;
private String language;
protected Language() {
}
public Language(String language) {
this.language = language;
}
public Integer getIdlanguage() {
return this.idlanguage;
}
protected void setIdlanguage(Integer idlanguage) {
this.idlanguage = idlanguage;
}
public String getLanguage() {
return this.language;
}
public void setLanguage(String language) {
this.language = language;
}
}
मैंने नो-आर्ग कंस्ट्रक्टर और setId
. को अपडेट किया है protected
करने की विधि . आप उन्हें private
. में भी अपडेट कर सकते हैं :केवल हाइबरनेट को ही उनका उपयोग करना चाहिए (और यह निजी क्षेत्रों/विधियों का उपयोग कर सकता है)।