Mar*_*ouf 7 persistence hibernate jpa
我们有一组接口,用作API,并从其他模块引用.这些接口的一组具体实现,对"主"应用程序模块是私有的.这些类带有许多注释(JPA以及用于XML序列化的XStream).
我遇到了一个问题.我们有一个用户类,其中包含与位置相关的许多字段.我们想把它们放到Address类中.我们希望数据(现在)保留在同一个表中.该方法是一个嵌入式类.
问题是类型签名必须仅引用其他接口以满足它们实现的接口.
当我尝试持久化UserImpl时,我得到了异常:
org.hibernate.MappingException:无法确定:com.example.Address的类型,在表:User,对于列:[org.hibernate.mapping.Column(address)]
示例代码:
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
}
Run Code Online (Sandbox Code Playgroud)
mtp*_*typ 13
您可以使用@Target Hibernate Annotation(这是JPA注释的特定于Hibernate的扩展)
@Embedded
@Target(AddressImpl.class)
Address getAddress() {
return address;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3240 次 |
| 最近记录: |