аннотация для фильтрации результатов ассоциации @OneToMany

У меня есть отношения родитель / потомок между двумя таблицами и соответствующее отображение в моих классах 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).

Заранее благодарим за любой совет.

20
задан adelarsq 8 August 2013 в 18:38
поделиться