有没有人知道如何解决`HibernateException:找到多个具有给定标识符的行`?

wj8zmpe1  于 2023-06-23  发布在  其他
关注(0)|答案(1)|浏览(103)

我对我的应用程序选择Hibernate作为ORM框架有一个问题。以下是本申请中的2个实体:

@Entity
@Table(name = “tb_order”)
public class Order {
        
    @Column(name=“id”)
    private String id;

    @Column(name=“product_id”)
    private String product_id;

    @ManyToOne
    @JoinColumn(name = “special_id”, referencedColumnName = “special_id”, insertable = false, updatable = false)
    @Fetch(FetchMode.JOIN)
    private User user;
}
@Entity
@Table(name = “tb_user”)
public class User {
        
    @Column(name=“id”)
    private String id;
    
    @Column(name=“name”)
    private String name;

    @Column(name=“email”)
    private String email;

    @Column(name=“special_id”)
    private String specialId;

    @Column(name=“status”)
    private String status;
}

可以看到,OrderUser之间存在多对一关系,引用的列是special_id
现在我遇到了Hibernate异常:找到了多个具有给定标识符的行:null(null),对于类:com.example.model.User
此问题的根本原因是一个special_id不仅可以引用User表中的一行,但我可以确保**一个special_id只能引用状态为Active**的一行。
我想问一下,在User的数据与Order连接之前,是否可以过滤User的结果集中的数据,只保留Active,这样就可以避免上面的Hibernate异常
很难描述我所尝试的。

相关问题