2013-06-19 6 views
5

साथ मैं निम्नलिखित इकाई:जेपीए @ManyToOne, अतिरिक्त शर्त

@Entity 
public class User { 
    @ManyToOne 
    @JoinColumn(name = "group_code", referencedColumnName = "code") 
    private Group group; 

    public User() { 
    } 

    // ... 
} 

यह ऊपर में शामिल होने के संबंध के लिए एक अतिरिक्त शर्त निर्दिष्ट करने के लिए किसी भी तरह संभव है? Group पदानुक्रमित है और User हमेशा मूल समूह को संदर्भित करना चाहिए, इसलिए अतिरिक्त स्थिति parent_group == NULL होगी। ध्यान दें कि code स्वयं अद्वितीय नहीं है।

@Entity 
public class Group { 
    // ... 

    @ManyToOne 
    @JoinColumn(name = "parent_package_code") 
    private Group parent; 

    public Group() { 
    } 

    // ... 
} 

उत्तर

4

Hibernate's@Filter टिप्पणी जोड़ने के लिए करने का प्रयास करें:

यहाँ समूह है। मैं पूरी स्कीमा के बारे में पता नहीं कर रहा हूँ, लेकिन यह हो सकता है:

@ManyToOne 
@JoinColumn(name = "group_code", referencedColumnName = "code") 
@Filter(name="parentGroup",condition="parent_group IS NULL") 
private Group group; 

EclipseLink के मामले में समाधान अलग ParentGroup इकाई के लिए हो सकता है। फिर आप इसे @AditionalCriteria एनोटेशन के साथ चिह्नित कर सकते हैं और मैपिंग को User और सरल Group के साथ सेट कर सकते हैं।

0

@Filter विशेषता एकल इकाई के साथ काम नहीं करता है, यह संग्रह

कोशिश के साथ काम करता इस तरह

@OneToMany(targetEntity = DefaultPortFloatingAddress.class) 
    @JoinTable(name="JCI_PORT_FLOATING_ADDRESS",joinColumns = {@JoinColumn(name="FLOATING_IP_ID", referencedColumnName = "floatingip_id")}, inverseJoinColumns = {@JoinColumn(name="PORT_FLOATING_ADDRESS_ID")}) 
    //@Where(clause="status='A'") 
    @Filter(name="status", condition="A") 
    private List<PortFloatingAddress> listPortFloatingAddress; 
संबंधित मुद्दे