2012-10-23 15 views
5

To jest mój abstrakcyjne ojciec:Jak zastąpić kolumnę dołączenia kolekcji hibernacji?

@MappedSuperclass 
public abstract class AbstractEntity implements Serializable { 

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

wszystkich moich jednostek posiada ten zestaw, ale każda jednostka ma inny referencedColumnName.

Czy istnieje sposób na zastąpienie tylko adnotacji @JoinColumn?

Odpowiedz

7

Możesz użyć adnotacji AssociationOverride. W Twoim przypadku będzie to wyglądać tak:

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

} 
0

Jeśli definiujesz adnotacje na właściwościach (tj. Pobierających) zamiast na polach, możesz zastąpić public Set<CLASS_TYPE> getList() w każdej z podklas i osobno zdefiniować @JoinColumn.

Powiązane problemy