JPA如何設置表名和實體名,表字段與實體字段的對應
JPA設置表名和實體名,表字段與實體字段的對應
首先 你的jpaProperties配置項中要有
<prop key="hibernate.hbm2ddl.auto">update</prop>
這樣就可以直接有對象映射為表結構,實現面向對象向數據庫轉化。
實體的名字可以和表名字不一樣,字段名字和實體的名字也可以不一樣。
package com.shiroweb.entitys; import java.util.Date; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name="shiro_user")//設置數據庫中表名字 public class ShiroUser { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name="USER_NAME")<span style="font-family: Arial, Helvetica, sans-serif;">//設置數據庫中字段名字,也可以設置長度,是否為空等屬性</span> private String username; @Column(name="PASS_WORD") private String password; @Column(name="CREATE_DATE") private Date createDate; @Column(name="USER_ID") private String userId; public String getUserId() { return userId; } public void setUserId(String userId) { this.userId = userId; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Date getCreateDate() { return createDate; } public void setCreateDate(Date createDate) { this.createDate = createDate; } }
JPA數據庫表實體命名規則
Unknown column ‘user0_.create_time’ in ‘field list’
數據庫,表字段命名是駝峰命名法(createTime),Spring data jpa 在操作表的時候,生成的sql語句中卻是create_time, 表字段不對照,
Spring data jpa基於hibernate-core-5.2.16.final.jar
這是由於jpa中hibernate的字段全名策略引起的,默認是SpringPhysicalNamingStrategy,在hibernate的包:org.hibernate.boot.model.naming中有一堆的命名策略,當然也可以實現
PhysicalNamingStrategy自定義實現。
application.properties 寫法
1、無修改命名
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
2、遇到大寫字母 加”_”的命名
spring.jpa.hibernate.naming.physical-strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- jpa onetomany 使用級連表刪除被維護表數據時的坑
- Spring boot基於JPA訪問MySQL數據庫的實現
- Springboot如何根據實體類生成數據庫表
- mybatis mapper互相引用resultMap啟動出錯的解決
- SpringBoot返回Json對象報錯(返回對象為空{})