तो मेरे पास यह मौजूदा डीबी स्कीमा है जिसमें कई टेबल हैं जिन्हें मैं जेपीए/हाइबरनेट के साथ मॉडल करना चाहता हूं। प्रत्येक तालिका में 30 अतिरिक्त कॉलम का एक ही समूह है (फ़ील्ड रिकॉर्ड की संख्या के रनटाइम विस्तार की अनुमति देने के लिए)।क्या हाइबरनेट/जेपीए में कॉलम नामों को गतिशील रूप से परिभाषित करना संभव है?
CREATE TABLE XX
(
"ID" VARCHAR2(100 BYTE) NOT NULL ENABLE,
"USER_LABEL" VARCHAR2(256 BYTE),
"CREATION_DATE" NUMBER(38,0) NOT NULL ENABLE,
"ADD_STR_FIELD_0" VARCHAR2(200 BYTE),
"ADD_LNG_FIELD_0" NUMBER(38,0),
"ADD_DBL_FIELD_0" NUMBER(38,0),
"ADD_STR_FIELD_1" VARCHAR2(200 BYTE),
"ADD_LNG_FIELD_1" NUMBER(38,0),
"ADD_DBL_FIELD_1" NUMBER(38,0),
"ADD_STR_FIELD_2" VARCHAR2(200 BYTE),
"ADD_LNG_FIELD_2" NUMBER(38,0),
"ADD_DBL_FIELD_2" NUMBER(38,0),
"ADD_STR_FIELD_3" VARCHAR2(200 BYTE),
"ADD_LNG_FIELD_3" NUMBER(38,0),
"ADD_DBL_FIELD_3" NUMBER(38,0),
"ADD_STR_FIELD_4" VARCHAR2(200 BYTE),
"ADD_LNG_FIELD_4" NUMBER(38,0),
"ADD_DBL_FIELD_4" NUMBER(38,0),
"ADD_STR_FIELD_5" VARCHAR2(200 BYTE),
"ADD_LNG_FIELD_5" NUMBER(38,0),
"ADD_DBL_FIELD_5" NUMBER(38,0),
"ADD_STR_FIELD_6" VARCHAR2(200 BYTE),
"ADD_LNG_FIELD_6" NUMBER(38,0),
"ADD_DBL_FIELD_6" NUMBER(38,0),
"ADD_STR_FIELD_7" VARCHAR2(200 BYTE),
"ADD_LNG_FIELD_7" NUMBER(38,0),
"ADD_DBL_FIELD_7" NUMBER(38,0),
"ADD_STR_FIELD_8" VARCHAR2(200 BYTE),
"ADD_LNG_FIELD_8" NUMBER(38,0),
"ADD_DBL_FIELD_8" NUMBER(38,0),
"ADD_STR_FIELD_9" VARCHAR2(200 BYTE),
"ADD_LNG_FIELD_9" NUMBER(38,0),
"ADD_DBL_FIELD_9" NUMBER(38,0),
}
मैं
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="XX")
public class XX {
@Id
Long id = null;
}
हर तालिका के लिए सरल वर्गों को परिभाषित करने के लिए और फिर एक सामान्य वर्ग
import javax.persistence.Column;
public abstract class AdditionalParameters {
@Column(name="ADD_STR_FIELD_0")
private String addStringField0 = null;
@Column(name="ADD_LNG_FIELD_0")
private Long addLongField0 = null;
@Column(name="ADD_DBL_FIELD_0")
private Double addDoubleField0 = null;
....
....
....
@Column(name="ADD_STR_FIELD_8")
private String addStringField8 = null;
@Column(name="ADD_LNG_FIELD_8")
private Long addLongField8 = null;
@Column(name="ADD_DBL_FIELD_8")
private Double addDoubleField8 = null;
}
में आम अतिरिक्त पैरामीटर परिभाषित करते हुए यह काम करेंगे, मैं नहीं की योजना कक्षा की हार्डकोडेड प्रकृति की तरह।
मैं अतिरिक्त पैरामीटर समूह के रूप में स्ट्रिंग, लंबे और डबल फ़ील्ड्स के प्रत्येक सेट को मॉडल करना चाहता हूं, और फिर में 0..9 समूह हैं। यह आवश्यक होने पर बाद में अतिरिक्त समूहों को आसानी से जोड़ने की अनुमति देगा।
यदि मैं एक्सएमएल मैपिंग समाधान का उपयोग करता हूं तो मैं प्रत्येक तालिका के लिए .hbm.xml उत्पन्न करते समय गतिशील रूप से सही कॉलम नाम निर्धारित कर सकता हूं। मैं एक एनोटेटेड समाधान का उपयोग करना पसंद करूंगा, लेकिन क्या @ कॉलम getName() विधि को ओवरराइड करने का कोई तरीका है ताकि मैं गतिशील रूप से जेनरेट किए गए कॉलम नाम को वापस कर सकूं?
यह यह वास्तव में क्या करेंगे, +1 –