2010-11-10 25 views
2

Je veux obtenir une ligne spécifique dans une relation OneToMany. Par exemple. obtenir le meilleur article d'une commandeJPA/Hibernate + obtenir un élément spécifique de onetomayrelation

Exemple:

public class Order { 

@Id 
@Column(name = "ORDER_ID") 
private Long id; 

??? 
private Item cheapestItem; 

} 

public class Item { 

@Id 
@Column(name = "ITEM_ID") 
private Long id; 

private Long price; 

} 

Comment puis-je faire cela?

+0

Ne devrait-il pas s'agir de 'Item cheapestItem'? Si vous voulez vraiment l'ordre le moins cher, vous devriez le placer dans la classe 'Item' –

+0

C'est correct. J'ai changé l'exemple –

Répondre

1

Essayez spécifiant une clause where dans la mise en veille prolongée annotation @Where (Je ne sais pas si vous pouvez l'appliquer à un non-recouvrement, bien que)

1

Je veux (...) le moins cher d'un article commander

Si vous voulez vraiment obtenir le, il devrait être est faisable avec un ManyToOne et un JoinColumnOrFormula moins cher Item (sans elle persiste en fait). Nécessite Hibernate 3.5+, voir les problèmes comme HHH-4382 et HHH-5041 pour des exemples. Récupérer uniquement le prix serait beaucoup plus facile et faisable avec les versions précédentes d'Hibernate. Voir Hibernate Derived Properties - Performance and Portability.