首页 > 解决方案 > JPA 异常:找到了多行具有给定标识符的行

问题描述

我正在使用和开发应用Spring Boot程序。VaadinJPA

我创建了 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

我哪里做错了?

标签: javapostgresqlspring-boothibernatejpa

解决方案


推荐阅读