java - JPA 异常:找到了多行具有给定标识符的行
问题描述
我正在使用和开发应用Spring Boot
程序。Vaadin
JPA
我创建了 3 个实体类:
作者:
@Entity
@Table(name = "author")
public class Author {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id")
private Long id;
@Column(name = "name")
private String name;
@Column(name = "surname")
private String surname;
@Column(name = "patronymic")
private String patronymic;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "author", cascade = CascadeType.ALL, orphanRemoval = true)
private Set<Book> books;
类型:
@Entity(name = "genre")
@Table(name = "genre")
public class Genre {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id")
private Long id;
@Column(name = "name")
private String name;
@OneToOne(fetch = FetchType.LAZY, mappedBy = "genre", cascade = CascadeType.ALL, orphanRemoval = true)
private Book book;
这本书与作者(许多书 - 一位作者)和流派(一种流派 - 一本书)有关
书:
@Entity
@Table(name = "book")
public class Book {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@Column(name = "name")
private String name;
@ManyToOne(fetch = FetchType.LAZY,cascade = CascadeType.ALL)
@JoinColumn(name = "author_id")
private Author author;
@OneToOne(fetch = FetchType.LAZY,cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "genre_id")
private Genre genre;
@Column(name = "publisher")
private String publisher;
@Column(name = "year")
private int year;
@Column(name = "city")
private String city;
..当我运行我的spring boot应用程序时,我得到了错误。
原因:org.hibernate.HibernateException:找到了多个具有给定标识符的行:3,对于类:com.app.entity.Book
我哪里做错了?
解决方案
推荐阅读
- flutter - 在 Flutter 中创建自定义控制器
- java - 如何在运行时更改 RecyclerView 的行数
- python - 为什么我不能在 Visual Studio 代码中的 python 3 上安装 numpy
- sql - 如何在某些值仅存在于一个表中的情况下加入?
- python - 在 Matplotlib 中将一条曲线正好放在另一条曲线下方
- java - 即使连接数多于线程数,Hikari getconnection 也很慢
- java - 如何将地图列表转换为地图
- javascript - 在 JavaScript 和 date-fns 中一致地显示日期,无论时区如何
- excel - 如何在不主动使用虚拟机时保持虚拟机处于活动状态,以发送所有打开的邮件?
- php - 使用星期几和 tsrange 防止插入重叠的日期范围