यहां एक विशेष मामला है, लेकिन आप अपना खुद का काम बनाने के लिए प्रेरित कर सकते हैं। यहां लक्ष्य दो अलग-अलग तालिकाओं से रिकॉर्ड्स की कुल संख्या को गिनना है जहां रिकॉर्ड एक विशेष मानदंड को पूरा करते हैं। मेरा मानना है कि यह तकनीक किसी भी मामले के लिए काम करेगी जहां आपको कई तालिकाओं/स्रोतों से डेटा एकत्र करने की आवश्यकता है।
मेरे पास कुछ विशेष इंटरमीडिएट कक्षाएं सेटअप हैं, इसलिए नामित क्वेरी को कॉल करने वाला कोड छोटा और प्यारा है, लेकिन आप अपनी क्वेरी निष्पादित करने के लिए नामित प्रश्नों के संयोजन के साथ सामान्य रूप से उपयोग की जाने वाली विधि का उपयोग कर सकते हैं।
@Entity
@NamedQueries({
@NamedQuery(
name ="PIXEL_ALL",
query = "" +
" SELECT new SourceCount(" +
" (select count(a) from PIXEL_LOG_CURR1 a " +
" where to_char(a.TIMESTAMP, 'YYYYMMDD') = :PROCDATE " +
" )," +
" (select count(b) from PIXEL_LOG_CURR2 b" +
" where to_char(b.TIMESTAMP, 'YYYYMMDD') = :PROCDATE " +
" )" +
") from Dual1" +
""
)
})
public class SourceCount {
@Id
private Long COUNT;
public SourceCount(Long COUNT1, Long COUNT2) {
this.COUNT = COUNT1+COUNT2;
}
public Long getCOUNT() {
return COUNT;
}
public void setCOUNT(Long COUNT) {
this.COUNT = COUNT;
}
}
जादू यहां का एक हिस्सा एक डमी तालिका बना सकते हैं और में एक रिकॉर्ड सम्मिलित करने के लिए है:
QueryParms parms=new QueryParms();
parms.put("PROCDATE",PROCDATE);
Long pixelAll = ((SourceCount)Fetch.row("PIXEL_ALL",parms,logger)).getCOUNT();
आप यहाँ देख सकते हैं, नामित क्वेरी एक संघ बयान की तरह एक aweful बहुत देखने के लिए शुरू होता है यह। मेरे मामले में, मैंने इसे दोहरी 1 नाम दिया क्योंकि मेरा डेटाबेस ओरेकल है, लेकिन मुझे नहीं लगता कि यह डमी टेबल कहलाता है।
@Entity
@Table(name="DUAL1")
public class Dual1 {
@Id
Long ID;
}
अपने डमी रिकॉर्ड सम्मिलित करने को न भूलें: के रूप में [यहां] वर्णित
SQL> insert into dual1 values (1);
समाधान में से एक कुल इकाई का उपयोग करना है, (http://stackoverflow.com/questions/ 7322526/हाइबरनेट-जेपीए-है यह संभव करने के लिए पुनः प्राप्त-विषम-संस्थाओं में एक-एकल कुए/7322738 # 7322738)। –