Abbiamo un set di interfacce, utilizzato come API e referenziato da altri moduli. Un insieme di implementazioni concrete di tali interfacce, private del modulo dell'app "principale". Queste classi contengono un numero di annotazioni (JPA e XStream per la serializzazione XML).Hibernate e JPA - Mappatura degli errori Classe integrata esposta tramite un'interfaccia
Ho incontrato un problema. Abbiamo una classe utente con un numero di campi all'interno di esso relativo alla posizione. Vorremmo portarli in classe Address. Vogliamo che i dati (per ora) rimangano nella stessa tabella. L'approccio è una classe incorporata.
Il problema è che le firme del tipo devono fare riferimento solo ad altre interfacce per soddisfare le interfacce che implementano.
Quando provo a persistere un UserImpl, ottengo l'eccezione:
org.hibernate.MappingException: Could non determinare il tipo di: com.example.Address, a tavola: l'utente, per colonne: [org.hibernate.mapping.Column (indirizzo)] codice
Esempio:
interface User {
int getId();
String getName();
Address getAddress();
}
@Entity
class UserImpl implements User {
int id;
String name;
Address address;
int getId() {
return id;
}
void setId(int id) {
this.id = id;
}
String getName() {
return name;
}
String setName(String name) {
this.name = name;
}
@Embedded
Address getAddress() {
return address;
}
void setAddress(Address address) {
this.address = address;
}
}
interface Address {
String getStreet();
String getCity();
String getState();
String getZip();
String getCountry();
}
@Embeddable
class AddressImpl implements Address {
String street;
String city;
String state;
String zip;
String country;
public String getStreet() {
return street;
}
public String getCity() {
return city;
}
public String getState() {
return state;
}
//... etc
}
Grazie, che è davvero una soluzione anche se speravo questo potrebbe essere fatto utilizzando solo JPA. Potrebbe essere utile sapere se questo è possibile con altre implementazioni JPA. –
In base all'eccezione che hai citato, ho pensato che stavi usando Hibernate. Le probabilità sono se fa parte delle Annotazioni Hibernate che non è stato ancora aggiunto alle specifiche JPA. – mtpettyp
Lo siamo, ma sarebbe bello essere neutrali nei confronti del venditore laddove possibile. –