xno*_*pre 25 java annotations jpa
使用JPA annoations,我想重用相同的嵌入对象,如下所示:
@Entity
public class User {
    @Embedded
    public Address homeAddress;
    @Embedded
    public Address workAddress;
}
@Embeddable
public class Address {
    public String code;
    public String city;
    ...
} 
我可以使用@AttributeOverrides,@ AttributeOverride和@Column指定SQL列名,但它是verbos.是否可以仅为homeAddress和workAddress指定要添加到每列的前缀?
谢谢,
泽维尔
如果你想使用多个相同的Embedded类.你必须@AttributeOverrides  为所有列做.试试如下;
@Embeddable
public class Address {
    private String state;
    @Column(name = "zip_code")
    private String zip;
}
@Entity(name = "Employee")
public class Employee implements Serializable {
    @Embedded
    @AttributeOverrides({
        @AttributeOverride(name = "state", column = @Column(name = "province_1")),                       
        @AttributeOverride(name = "zip", column = @Column(name = "postal_code_2"))
    })
    private Address address_1;  
    @Embedded
    @AttributeOverrides({
        @AttributeOverride(name = "state", column = @Column(name = "province_2")),                       
        @AttributeOverride(name = "zip", column = @Column(name = "postal_code_2"))
    })
    private Address address_2;  
}   
我的建议,如果Embedded你的一个或多个价值Entity.尝试使用@CollectionTable.
@CollectionTable(name = "EMPLOYEE_ADDRESS", joinColumns = @JoinColumn(name = "ADDRESS_ID"))
private List<Address> addressList;
添加这个对我有用(尽管我使用 hibernate 作为 JPA 提供程序)
<property name="hibernate.implicit_naming_strategy" value="org.hibernate.boot.model.naming.ImplicitNamingStrategyComponentPathImpl" />
| 归档时间: | 
 | 
| 查看次数: | 10035 次 | 
| 最近记录: |