我对我的应用程序选择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;
}
可以看到,Order
和User
之间存在多对一关系,引用的列是special_id
。
现在我遇到了Hibernate异常:找到了多个具有给定标识符的行:null(null),对于类:com.example.model.User
此问题的根本原因是一个special_id不仅可以引用User表中的一行,但我可以确保**一个special_id只能引用状态为Active
**的一行。
我想问一下,在User的数据与Order连接之前,是否可以过滤User的结果集中的数据,只保留Active
,这样就可以避免上面的Hibernate异常
很难描述我所尝试的。
1条答案
按热度按时间wz8daaqr1#
那谷歌呢
https://thorben-janssen.com/hibernate-tips-filter-entities-mapped-association/