【问题标题】:how to put condition for child object in case of @ManyToOne join in hibernate在@ManyToOne加入休眠的情况下如何为子对象设置条件
【发布时间】:2019-02-26 10:57:21
【问题描述】:
@Entity    
public class Contact{
@id
private long id;
@ManyToOne
@JoinColumn(name = "account_id")
private Account account;}

只有在 account.deleteFlag=false 存在时,我才想获取联系人对象以及联系人对象,请告诉我该怎么做。在@OneToMany 关系的情况下@where Annotation 存在,但对于@ManyToOne 关系,我得到了@JoinFormula 之类的解决方案,但它不起作用。

【问题讨论】:

  • 您说您尝试了@JoinFormula,但没有成功 - 您能否提供您在那里尝试的实现以及它存在的问题?
  • @ManyToOne @JoinColumn(name = "account_id", columnDefinition = "bigint") @JoinFormula("select * from Account where deleteFlag=false") 私人账户账户;

标签: hibernate spring-data-jpa


【解决方案1】:

不幸的是,@ManyToOne 映射不支持@Where - 如果您想始终排除所有已在任何地方删除的Account 实例,您可以在@Where 类本身上方添加@Where 注释,如下所示:

@Entity
@Where(clause = "deleteFlag=0")
public class Account { ... }

【讨论】:

  • 联系人拥有 account_id,这就是为什么它会找到具有该 account_id 的帐户然后它会抛出类似 javax.persistence.EntityNotFoundException: Unable to find Account with id 2 的异常
猜你喜欢
  • 1970-01-01
  • 2010-10-17
  • 1970-01-01
  • 2011-01-07
  • 1970-01-01
  • 1970-01-01
  • 2012-10-05
  • 1970-01-01
相关资源
最近更新 更多