首页 > 解决方案 > JPA / Hibernate - @OneToOne 和 @Where 不工作 - 那么现在呢?

问题描述

我在@OneToMany 关系中成功使用了@Where 子句,如下所示:

 @OneToMany(mappedBy="reconciliationId")
 @Where(clause = "debit_type = 'TAX_RETURN'")
 private List<BtaReconciliation> taxPaidReconciliation;

BtaReconciliation 类是这样的:

@Table(name = "bta_reconciliation")
public class BtaReconciliation implements Serializable {

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Column(name = "reconciliation_id")
private Long reconciliationId;

@Column(name = "debit_type")
private String debitType;

@Column(name = "credit_type")
private String creditType;

问题是关系应该是 OneToOne 而不是 ManyToOne。问题是当我更改为:

 @OneToOne(mappedBy="reconciliationId")
 @Where(clause = "debit_type = 'TAX_RETURN'")
 private BtaReconciliation taxPaidReconciliation;

它不起作用。taxPaidReconciliation 字段始终为空。

我在网上做了一些搜索,我可以看到@Where 不能与@OneToOne 一起使用。

它根本不会像上面那样工作。

我尝试了许多其他选择,但我根本无法找到一种方法来让它发挥作用。

注意:不应该更新 BtaReconciliation 类,因为有许多 debit_types,我不想在那里引入更改以支持每个 debit_type。

我期待收到有关如何最好地解决此问题的回复。

亲切的问候,弗格尔

标签: javahibernatejpa

解决方案


推荐阅读