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 不会尝试为我创建数据库,而是使用我提供的数据库并针对我在代码中定义的实体“验证”它)。

我与我的实体有几个多对多关系,例如BookAuthor

// 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 @?还是我只是在一个班级中定义一次?如果是这样,我在哪个类(BookAuthor)中定义这些注释是否重要?再次感谢! 如果您知道作者是这种关系中的拥有实体,那么您只需将@ManyToMany(mappedBy="books") 放在您的图书类中,无需进一步配置。如果答案解决了您的问题,请接受它作为答案:)

以上是关于springboot使用jpa插入数据,字段名映射不了?的主要内容,如果未能解决你的问题,请参考以下文章

JPA 表继承和对象映射

如何将计算字段映射到 JPA 实体?

JPA相关注解

Spring Data JPA + Postgres - 无法使用一对一映射插入数据

使用 SpringBoot 整合 MyBatis 开发 开启驼峰映射功能

springBoot整合JPA