2012-01-11 7 views
5

मैं इस वर्ग@Formula (हाइबरनेट में) का उपयोग कैसे करें एक ही (वर्तमान) वस्तु

@Entity 
@Table(name = "DB.APPL_SESSION") 
@AttributeOverrides({@AttributeOverride(name = "id", column = @Column(name = "APPL_SESSION_ID"))}) 
@SequenceGenerator(name = "TableSequence", sequenceName = "DB.APPL_SESSION_SQ") 

public class AiSession{ 

@Formula("(select sum(nvl(budg.AMT_OV,budg.AMT)) from DB.BUDGET budg where budg.APPL_SESSION_ID = APPL_SESSION_ID)") 
private LocalDate realSessionStartDate; 

उपरोक्त सूत्र मैं DB.BUDGET वस्तु के साथ काम कर रहा था और वर्तमान वस्तु आईडी के साथ है का उल्लेख करने के (APPL_SESSION_ID)। लेकिन अब मैं अगले सदस्य चर (StartDate) जो AidApplicantYearSession कक्षा में है के साथ काम करने ही चाहता था

@Basic 
@Temporal(TemporalType.DATE) 
@Column(name = "START_OV_DT") 
private Date overrideStartDate; 

मैं एक सूत्र उस तरह पर ऊपर दिखता है, लेकिन केवल वस्तु के सदस्य चर का उपयोग करता है कैसे लिखना चाहिए? मैं

@Formula("(select START_OV_DT from DB.APPL_SESSION)") 

क्या यह सही तरीका है? दो सूत्रों के लिए तर्क पूरी तरह से अलग है।

उत्तर

5

@Formula बस, एसक्यूएल select खंड में डाला जाता है ताकि आप इसे में स्तंभ नाम का उपयोग कर सकते हैं: भी

@Formula("START_OV_DT") 

देखें:

+0

आपकी प्रतिक्रिया के लिए धन्यवाद। प्रलेखन पर यह कहता है "कभी-कभी, आप चाहते हैं कि डाटाबेस आपके लिए जेवीएम की बजाय कुछ गणना करे"। कौन सा अधिक कुशल है (JVM में गणना करना या डेटाबेस को कुछ गणना करना चाहिए) यदि यह अधिक जटिल सूत्र था? – WowBow

+0

मैं उल्लेख करना भूल गया कि मुझे एनवीएल फ़ंक्शन का भी उपयोग करना चाहिए। यहां बताया गया है कि मैंने इसे @Formula ("(एनवीएल (START_OV_DT, START_DT) का चयन करें") क्या चयन को छोड़कर इसे रखने के समान ही होगा? – WowBow

+1

@MatX: मुझे नहीं लगता कि यह ' फॉर्मूला 'गणना के लिए जो आसानी से आवेदन पक्ष पर किया जा सकता है। हाँ, यह कई क्षेत्रों के लिए ठीक होना चाहिए। – axtavt

0

मैं एक टेबल है जिसमें ब्लॉक की कुल संख्या BITX_SESSION.TOTAL है ब्लाकों

अब मैं एक और तालिका ब्लॉकों यह BITX_SESSION_DEVICE.BLOCKS_RECEIVED प्राप्त दोनों तालिका सत्र मुझे जरूरत की पहचान करने के SESSION_ID है की संख्या है से प्रतिशत गणना करनी है।

मुझे जिस आउटपुट की आवश्यकता है वह प्राप्त ब्लॉकों का प्रतिशत है (BLOCKS_RECEIVED/TOTAL ब्लॉक्स * 100)। फॉर्मूला का उपयोग करके इसे लिखना सुनिश्चित नहीं है।

संबंधित मुद्दे