在Hibernate 5中,可以通过使用@Column
注解的name
属性来指定列的名称,但是有时候我们希望忽略@Column
注解的命名策略,即使用默认的命名策略。为了实现这一点,可以使用@AttributeOverride
注解。
@AttributeOverride
注解可以用于覆盖实体类中属性的映射信息,包括列名、类型等。通过在实体类的属性上使用@AttributeOverride
注解,可以覆盖@Column
注解的命名策略。
下面是一个示例:
@Entity
@Table(name = "my_table")
public class MyEntity {
@Id
private Long id;
@AttributeOverrides({
@AttributeOverride(name = "firstName", column = @Column(name = "first_name")),
@AttributeOverride(name = "lastName", column = @Column(name = "last_name"))
})
private Name name;
// 其他属性和方法
}
@Embeddable
public class Name {
private String firstName;
private String lastName;
// 构造方法、getter和setter等
}
在上面的示例中,MyEntity
实体类中的name
属性使用了@AttributeOverride
注解来覆盖Name
类中的firstName
和lastName
属性的映射信息。通过指定column
属性,我们可以指定这两个属性在数据库中的列名。
这样,当Hibernate生成SQL语句时,会使用@AttributeOverride
注解中指定的列名,而忽略@Column
注解的命名策略。
推荐的腾讯云相关产品:腾讯云数据库MySQL、腾讯云云服务器CVM。
腾讯云数据库MySQL产品介绍链接地址:https://cloud.tencent.com/product/cdb
腾讯云云服务器CVM产品介绍链接地址:https://cloud.tencent.com/product/cvm
领取专属 10元无门槛券
手把手带您无忧上云