我有一些逻辑删除的记录(即active=false
)导致我的@ManyToOne
映射出现问题,因为连接列返回了多个结果。
我只需要包含我认为可以实现active=true
的记录:
@ManyToOne
@NotFound(action = NotFoundAction.IGNORE)
@JoinColumn(name = "site_id", referencedColumnName = "site_id", insertable = false, updatable = false)
@WhereJoinTable(clause = "active=true")
private Site site;
然而,看起来hibernate没有使用WhereJoinTable
(也许它只对OneToMany
有效?)因为active=true
没有出现在生成的SQL中(日志) )问题仍然存在。
是否可以为ManyToOne
和如何连接包含where子句?
答案 0 :(得分:3)
答案 1 :(得分:1)
@JoinColumnOrFormula anotation是一种合适的解决方法
答案 2 :(得分:0)
对我有用的解决方案是在类的顶部添加@where 注释,请参见下一个示例:
@Where(clause = "state_.idCity=0")
@SuppressWarnings("serial")
@Entity
@Table(name="city", schema="catalog")
@SequenceGenerator(name = "default_gen", sequenceName = "IDSERIEINVALIDO", allocationSize = 1)
public class Citye implements Serializable{
@Id
private Long id;
}