FAR*_*ARS 2 spring hibernate jpa spring-data-jpa spring-boot
我有一段代码,作者在其中创建了一个 JPA 实体。不知何故,它成功地工作了,这对我来说似乎很奇怪,因为并不是每个字段都用“@Column”注释。基于此,这是我的问题:
如果每个字段都没有“Column”注释(“id”除外),那么这个类如何才能正常工作(所有数据都成功记录在数据库中)?
/**
* @author Ram Alapure
* @since 05-04-2017
*/
@Entity
@Table(name="User")
public class User {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "id", updatable = false, nullable = false)
private long id;
private String firstName;
private String lastName;
private LocalDate dob;
private String gender;
private String role;
private String email;
private String password;
@Override
public String toString() {
return "User [id=" + id + ", firstName=" + firstName + ", lastName=" + lastName + ", dob=" + dob + ", email="
+ email + "]";
}
}
Run Code Online (Sandbox Code Playgroud)
例如,这是另一个运行正常的类。但这一次,每个字段都带有“@Column”注释。我认为这是 JPA 从现场创建列的先决条件。
@Entity
@Table(name = "address")
public class Address {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "address_id")
private long id;
@Column(name = "rua")
private String street;
@Column(name = "number")
private int number;
@Column(name = "complement")
private String complement;
@Column(name = "suburb")
private String suburb;
@Column(name = "city")
private String city;
@Column(name = "state")
private String state;
@Column(name = "country")
private String country;
@Column(name = "cep")
Run Code Online (Sandbox Code Playgroud)
Getter 和 Setter 对所有代码片段都是隐藏的,因为它们看起来就像常规的 getter 和 setter,没有必要显示。
Ali*_*ien 13
如果您没有指定 @Column 注释(可选),则 Hibernate 通过使用驼峰式大小写来使用默认命名策略。
firstName 字段成为数据库中的first_name 列。
您还可以根据需要定义自己的命名策略。
从文档中。
战略 ; Hibernate 5 定义了物理和隐式命名策略。Spring Boot 默认配置 SpringPhysicalNamingStrategy。此实现提供了与 Hibernate 4 相同的表结构:所有点都被下划线替换,驼峰式大小写也被下划线替换。
| 归档时间: |
|
| 查看次数: |
6319 次 |
| 最近记录: |