JPA / Hibernate - @OneToOne и @ Где не работает - и что теперь? - PullRequest
0 голосов
/ 08 апреля 2020

Я успешно использовал предложение @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.

Я с нетерпением жду ответа о том, как наилучшим образом решить эту проблему.

С уважением, Фергал

...