我只有名为 Employee
的表名,该表具有所有地址属性,我想使用 hibernate 员工表和地址属性的内部类进行映射。
<property name="clientMark" column="CLIENT_MARK"/>
<property name="Address.street1" column="B_STREET_ADDRESS_1"/>
<property name="Address.street2" column="B_STREET_ADDRESS_2"/>
<property name="Address.city" column="B_CITY"/>
<property name="Address.state" column="B_STATE"/>
<property name="Address.postalCode" column="B_POSTAL_CODE"/>
<property name="Address.country" column="B_COUNTRY"/>
最佳答案
如果我理解正确的话,你必须这样做:
public class Employee {
private String clientMark;
private Address address;
public String getClientMark() {
return clientMark;
}
public void setClientMark(String clientMark) {
this.clientMark = clientMark;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
public static class Address {
private String street1;
private String street2;
public String getStreet1() {
return street1;
}
public void setStreet1(String street1) {
this.street1 = street1;
}
public String getStreet2() {
return street2;
}
public void setStreet2(String street2) {
this.street2 = street2;
}
}
}
将内部类设为公共(public)和静态,这样您就可以从其他类创建新对象。然后在外部类中为内部类添加setter和getter方法,hibernate将能够设置和获取对象。接下来您需要编辑 .hbm.xml 文件:
<property name="clientMark" column="CLIENT_MARK"/>
<component name="address">
<property name="street1" column="B_STREET_ADDRESS_1"/>
</component>
<component name="address">
<property name="street2" column="B_STREET_ADDRESS_2"/>
</component>
hibernate 注解 <component>
表示命名变量将是具有一些变量的类(hbm.xml 文件中的 <property>
)。在此之后,您可以像这样测试您的代码:
Employee entity = new Employee();
entity.setClientMark("client_mark");
Employee.Address address = new Employee.Address();
address.setStreet1("street1");
address.setStreet2("street2");
entity.setAddress(address);
// entity is ready to be saved
您在数据库中的结果将是:
|------------------------------------------------------------|
| id | CLIENT_MARK | B_STREET_ADDRESS_1 | B_STREET_ADDRESS_2 |
|------------------------------------------------------------|
| 1 | client_mark | street1 | street2 |
|------------------------------------------------------------|
希望对你有帮助...☺
关于hibernate - 如何使用 hibernate 将嵌套类映射到单个数据库表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45818111/