У меня есть родительское/дочернее отношение между двумя таблицами и соответствующее сопоставление в моих классах Java. Таблицы примерно выглядят так:
A (ref number, stuff varchar2(4000))
B (a_ref number, other number, foo varchar2(200))
и код Java:
@Entity
class A {
@Id
@Column(name = "REF")
private int ref;
@OneToMany
@JoinColumn(name = "A_REF", referencedName = "REF")
private Set<B> bs;
}
@Entity
class B {
@Id
@Column(name = "A_REF")
private int aRef;
@Id
@Column(name = "OTHER")
private int other;
}
Это отлично работает, но я хотел бы добавить фильтр в строки, которые я извлекаю из дочерней таблицы. Создаваемый запрос выглядит так:
select a_ref, other, foo from B where a_ref = ?
И я бы хотел:
select a_ref, other, foo from B where a_ref = ? and other = 123
Дополнительным фильтром будет только имя столбца и жестко закодированное значение. Есть ли способ сделать это с помощью аннотаций спящего режима?
Я просмотрел @JoinFormula
, но с этим мне всегда нужно ссылаться на имя столбца из родительской таблицы (в атрибуте name
в JoinFormula).
Заранее благодарим за любые советы.