springboot使用jpa插入数据,字段名映射不了?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot使用jpa插入数据,字段名映射不了?相关的知识,希望对你有一定的参考价值。
实体类和数据库字段名一致,都是lastName。但是在浏览器插入数据的时候lastName会变成name,封装不了数据
字段名明显不一样呀,你@Table(name = "last_name") 参考技术A 你看看你对这个新增的类的字段,你有没写错。可能会手误,或者配置一下别名。转意一下。实体类的看看吧。不一定哦。追答是不是网页里传输的json或是这个循环错了,检查检查
在 Spring Boot/Hibernate/JPA 中为连接表指定表名和字段名
【中文标题】在 Spring Boot/Hibernate/JPA 中为连接表指定表名和字段名【英文标题】:Specifying table and field names for join tables in Spring Boot/Hibernate/JPA 【发布时间】:2017-09-01 13:53:21 【问题描述】:我正在使用 MySQL 支持的 Spring Boot/JPA。我已经配置了数据库,因此计划使用hibernate.hbm2ddl.auto = validate
(因此 Hibernate 不会尝试为我创建数据库,而是使用我提供的数据库并针对我在代码中定义的实体“验证”它)。
我与我的实体有几个多对多关系,例如Book
和Author
:
// Groovy pseudo code! One book can have multiple authors, and a
// single author can have written many books.
@Entity
class Book
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
Long id
@Column(name="title")
String title
@ManyToMany
List<Author> authors
@Entity
class Author
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
Long id
@Column(name="name")
String name
@ManyToMany
List<Book> books
这里,这些类由下表表示:
[books]
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT # PRIMARY KEY
title VARCHAR(50) NOT NULL
[authors]
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT # PRIMARY KEY
name VARCHAR(100) NOT NULL
[books_x_authors]
books_x_authors_id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT # PRIMARY KEY
book_id # FK on books
author_id # FK on authors
books_x_authors
是我的多对多或“人行横道”表。这是我非常喜欢并希望尽可能坚持的数据库命名约定。那么如何配置 Spring Boot/Hibernate 以使用 books_x_authors
作为我的加入/人行横道表,而不是期望可能有一个遵守自己约定的表?
【问题讨论】:
【参考方案1】:在您的 ManyToMany 下指定包含您需要的所有内容的连接表
@ManyToMany
@JoinTable(name="books_x_authors",
joinColumns=@JoinColumn(name="author_id", inverseJoinColumns=@JoinColumn(name="book_id") )
List<Book> books
【讨论】:
感谢@Amer Qarabasa (+1) - 如果您不介意,可以快速跟进问题!我假设在Book
类中,我必须 做相反的事情并将book_id
声明为joinColumns
,并且我必须将author_id
声明为@987654326 @?还是我只是在一个班级中定义一次?如果是这样,我在哪个类(Book
或Author
)中定义这些注释是否重要?再次感谢!
如果您知道作者是这种关系中的拥有实体,那么您只需将@ManyToMany(mappedBy="books") 放在您的图书类中,无需进一步配置。如果答案解决了您的问题,请接受它作为答案:)以上是关于springboot使用jpa插入数据,字段名映射不了?的主要内容,如果未能解决你的问题,请参考以下文章
Spring Data JPA + Postgres - 无法使用一对一映射插入数据