Я успешно использовал предложение @Where в своем отношении @OneToMany следующим образом:
@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_type, и я не Я хочу внести туда изменения для поддержки каждого типа debit_type.
Я с нетерпением жду ответа о том, как наилучшим образом решить эту проблему.
С уважением, Фергал