JPA如何設(shè)置表名和實(shí)體名,表字段與實(shí)體字段的對(duì)應(yīng)
JPA設(shè)置表名和實(shí)體名,表字段與實(shí)體字段的對(duì)應(yīng)
首先 你的jpaProperties配置項(xiàng)中要有
<prop key="hibernate.hbm2ddl.auto">update</prop>
這樣就可以直接有對(duì)象映射為表結(jié)構(gòu),實(shí)現(xiàn)面向?qū)ο笙驍?shù)據(jù)庫(kù)轉(zhuǎn)化。
實(shí)體的名字可以和表名字不一樣,字段名字和實(shí)體的名字也可以不一樣。
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")//設(shè)置數(shù)據(jù)庫(kù)中表名字 public class ShiroUser { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name="USER_NAME")<span style="font-family: Arial, Helvetica, sans-serif;">//設(shè)置數(shù)據(jù)庫(kù)中字段名字,也可以設(shè)置長(zhǎng)度,是否為空等屬性</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數(shù)據(jù)庫(kù)表實(shí)體命名規(guī)則
Unknown column 'user0_.create_time' in 'field list'
數(shù)據(jù)庫(kù),表字段命名是駝峰命名法(createTime),Spring data jpa 在操作表的時(shí)候,生成的sql語(yǔ)句中卻是create_time, 表字段不對(duì)照,
Spring data jpa基于hibernate-core-5.2.16.final.jar
這是由于jpa中hibernate的字段全名策略引起的,默認(rèn)是SpringPhysicalNamingStrategy,在hibernate的包:org.hibernate.boot.model.naming中有一堆的命名策略,當(dāng)然也可以實(shí)現(xiàn)
PhysicalNamingStrategy自定義實(shí)現(xiàn)。
application.properties 寫法
1、無(wú)修改命名
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
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring框架中@AliasFor注解詳細(xì)說(shuō)明
這篇文章主要給大家介紹了關(guān)于Spring框架中@AliasFor注解詳細(xì)說(shuō)明的相關(guān)資料,@AliasFor是Spring Framework中的一個(gè)注解,它用于指定注解屬性之間的別名關(guān)系,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-02-02利用Java實(shí)現(xiàn)mTLS調(diào)用
這篇文章主要介紹使用 Java作為客戶端 與受 mTLS 保護(hù)的服務(wù)交互。為了對(duì)我們的 Java 客戶端進(jìn)行 ssl 配置,我們需要先設(shè)置一個(gè) SSLContext。這簡(jiǎn)化了事情,因?yàn)?SSLContext 可用于各種 http 客戶端,接下來(lái)我們一起進(jìn)入下面文章了解具體內(nèi)容,需要的朋友可以參考一下2021-11-11TreeSet詳解和使用示例_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
TreeSet是一個(gè)有序的集合,它的作用是提供有序的Set集合。這篇文章主要介紹了TreeSet使用示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05MyBatis中map的應(yīng)用與模糊查詢實(shí)現(xiàn)代碼
這篇文章主要介紹了MyBatis中map的應(yīng)用與模糊查詢實(shí)現(xiàn)代碼,文中通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-11-11