Използвам анотиран Hibernate и се чудя дали е възможно следното.
Трябва да настроя серия от интерфейси, представляващи обектите, които могат да бъдат запазени, и интерфейс за главния клас на базата данни, съдържащ няколко операции за запазване на тези обекти (... API за базата данни).
Под това трябва да внедря тези интерфейси и да ги поддържам с Hibernate.
Така че ще имам например:
public interface Data {
public String getSomeString();
public void setSomeString(String someString);
}
@Entity
public class HbnData implements Data, Serializable {
@Column(name = "some_string")
private String someString;
public String getSomeString() {
return this.someString;
}
public void setSomeString(String someString) {
this.someString = someString;
}
}
Сега, това работи добре, донякъде. Проблемът идва, когато искам вложени обекти. Интерфейсът на това, което бих искал, е достатъчно лесен:
public interface HasData {
public Data getSomeData();
public void setSomeData(Data someData);
}
Но когато имплементирам класа, мога да следвам интерфейса, както по-долу, и да получа грешка от Hibernate, че не познава класа „Данни“.
@Entity
public class HbnHasData implements HasData, Serializable {
@OneToOne(cascade = CascadeType.ALL)
private Data someData;
public Data getSomeData() {
return this.someData;
}
public void setSomeData(Data someData) {
this.someData = someData;
}
}
Простата промяна би била да се промени типа от "Data" на "HbnData", но това очевидно би нарушило реализацията на интерфейса и по този начин би направило абстракцията невъзможна.
Може ли някой да ми обясни как да внедря това по начин, който да работи с Hibernate?