Mam klasy A i klasy BHibernacja mapping: ignorować super klasy pole
public class A{
int f1;
int f2;
int f2;
}
public class B extends A{
}
moje pytanie brzmi: w jaki sposób zignorować pole na przykład „F2” w tabeli odwzorowanym do B?
Mam klasy A i klasy BHibernacja mapping: ignorować super klasy pole
public class A{
int f1;
int f2;
int f2;
}
public class B extends A{
}
moje pytanie brzmi: w jaki sposób zignorować pole na przykład „F2” w tabeli odwzorowanym do B?
Witam Spróbuję odpowiedzieć zakładając edycję, którą zrobiłem do twojego posta W poniższym kodzie próbuję zignorować pole f2 z klasy A, tj. Nadklasy B, używając AttributeOverride.
@Entity
@AttributeOverride(name = "f2", column = @Column(name = "f2_col", insertable = false, updatable = false)
public class B extends A{
}
Chcesz o tym przeczytać dalszą AttributeOverride
AttributeOverride z wkładane = false, aktualizowalny = false powinno pomóc .. ale to też zależy od strategii spadkowego .. to tylko ułatwia tworzenie odwzorowaną pole odziedziczone z nadrzędnej przemijający .. tak, że jakaś inna podklasa może go używać, ale byłoby zignorować dla danej klasy sub ..
@Amir dzięki .. edycja została zatwierdzona .. daj mi znać, jeśli rozwiązanie działa dla ciebie .. –
to po prostu nadaje innej nazwy kolumnie w tabeli bazy danych, ale pytanie jest jak go zignorować, coś podobnego do korzystania z Transient zmienna. – Chaitanya
@Chaitanya dziękuję .. ale zakładając, że podklasa i nadklasa są zmapowane i chcesz zignorować ** wartość f2 ** w podklasie. AttributeOverride z _insertable = false, updatable = false_ powinno pomóc ... ale to także zależy od twojego dziedziczenia strategia .. pomaga tylko uczynić odwzorowane pole dziedziczone z superklasy przejściowej .. tak, że inna podklasa może z niej korzystać, ale zignoruje to dla tej konkretnej klasy podrzędnej .. daj mi znać, jeśli moje zrozumienie jest złe .. –
Jeśli chcesz warunkowo zastosować pola do podklasy, być może należy przeprojektować swoje zajęcia tak, że wyglądają jak ten
public abstract class MyAbstractClass {
// ...
}
public class A extends MyAbstractClass {
int f1;
}
public class B extends MyAbstractClass {
int f2;
}
Zakładając, że aplikujesz to do mapowania tabel bazy danych za pomocą Hibernate, możesz użyć @MappedSuperclass
na MyAbstractClass i @Entity
na A i B - mam nadzieję, że to pomaga.
której strategii dziedziczenia używasz? tabela na klasę, tabela na podklasę lub tabelę na klasę betonu .. ?? –
Czy przeczytałeś o przejściowym? – dosdebug