annotation de filtrer les résultats d'une @OneToMany association

J'ai des parent/enfant, la relation entre les deux tables, et le correspondant de la cartographie dans mes classes Java. Les tables à peu près ressembler à ça:

A (ref number, stuff varchar2(4000))
B (a_ref number, other number, foo varchar2(200))

et le code 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;
}

Cela fonctionne bien, mais je voudrais ajouter un filtre sur les lignes que j'ai récupérer à partir de la table enfant. La requête générée ressemble:

select a_ref, other, foo from B where a_ref = ?

Et j'aimerais qu'il soit:

select a_ref, other, foo from B where a_ref = ? and other = 123

Le filtre supplémentaire qui ne serait qu'un nom de colonne et une valeur codée en dur. Est-il un moyen de le faire en utilisant hibernate annotations?

J'ai regardé @JoinFormula, mais avec qui j'ai toujours de faire référence à un nom de colonne de la table parent (dans le name attribut de la JoinFormula).

Merci d'avance pour tous les conseils.

  • Curieux, pourquoi ne pas simplement passer comme paramètre? where a_ref = ? and other = ?. La valeur transmise peut être codé en dur, si c'est ce que vous devez faire (je vous suggérons d'utiliser les propriétés configurables système si).
InformationsquelleAutor Xavier | 2011-08-02