2012-10-23 16 views
5

यह मेरा सार पिता है:हाइबरनेट संग्रह कॉलम में ओवरराइड कैसे करें?

@MappedSuperclass 
public abstract class AbstractEntity implements Serializable { 

    @OneToMany(fetch = FetchType.LAZY) 
    @JoinColumn(name = "entity_no", referencedColumnName = "MY_COLUMN") 
    private Set<CLASS_TYPE> list; 
} 

मेरे सभी संस्थाओं का सेट है, परंतु प्रत्येक इकाई अलग referencedColumnName है।

क्या केवल @JoinColumn एनोटेशन को ओवरराइड करने का कोई तरीका है?

उत्तर

7

आप AssociationOverride एनोटेशन का उपयोग कर सकते हैं। आपके मामले में यह इस तरह दिखेगा:

@Entity 
@AssociationOverrides({ 
    @AssociationOverride(name = "list", 
     joinColumns = @JoinColumn(referencedColumnName = "COLUMN_NEW_NAME")) 
}) 
public class ConcreteEntity extends AbstractEntity { 

} 
0

यदि आप फ़ील्ड के बजाय गुणों (यानी गेटर्स) पर एनोटेशन परिभाषित करते हैं, तो आप प्रत्येक उप वर्ग में public Set<CLASS_TYPE> getList() को ओवरराइड कर सकते हैं और @JoinColumn को अलग से परिभाषित कर सकते हैं।

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