java – JPA:查询根据实体类中定义的外键值获取结果?

前端之家收集整理的这篇文章主要介绍了java – JPA:查询根据实体类中定义的外键值获取结果?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Netbean 6.9从此sql Server 2008表生成以下JPA实体类:

我想获得具有特定SKU值的所有ProductDescriptors.像这样的东西:

  1. SELECT * FROM ProductDescriptors WHERE SKU='something'

给定实体类,获得结果的Java代码是什么?

谢谢.

  1. @Entity
  2. @Table(name = "ProductDescriptors")
  3. @NamedQueries({
  4. @NamedQuery(name = "ProductDescriptors.findAll",query = "SELECT p FROM ProductDescriptors p"),@NamedQuery(name = "ProductDescriptors.findByDescriptorID",query = "SELECT p FROM ProductDescriptors p WHERE p.descriptorID = :descriptorID"),@NamedQuery(name = "ProductDescriptors.findByLanguageCode",query = "SELECT p FROM ProductDescriptors p WHERE p.languageCode = :languageCode"),@NamedQuery(name = "ProductDescriptors.findByTitle",query = "SELECT p FROM ProductDescriptors p WHERE p.title = :title"),@NamedQuery(name = "ProductDescriptors.findByIsDefault",query = "SELECT p FROM ProductDescriptors p WHERE p.isDefault = :isDefault"),@NamedQuery(name = "ProductDescriptors.findByBody",query = "SELECT p FROM ProductDescriptors p WHERE p.body = :body")})
  5. public class ProductDescriptors implements Serializable {
  6. private static final long serialVersionUID = 1L;
  7. @Id
  8. @Basic(optional = false)
  9. @Column(name = "DescriptorID")
  10. private Integer descriptorID;
  11. @Basic(optional = false)
  12. @Column(name = "LanguageCode")
  13. private String languageCode;
  14. @Basic(optional = false)
  15. @Column(name = "Title")
  16. private String title;
  17. @Basic(optional = false)
  18. @Column(name = "IsDefault")
  19. private boolean isDefault;
  20. @Basic(optional = false)
  21. @Column(name = "Body")
  22. private String body;
  23. @JoinColumn(name = "SKU",referencedColumnName = "SKU")
  24. @ManyToOne(optional = false)
  25. private Products products;

解决方法

像这样的东西:
  1. @PersistenceContext( unitName = "youPersistenceUnitHere" )
  2. private EntityManager _entityManager;
  3.  
  4. public List<ProductDescriptors> getProductDescriptorsBySku( String sku ) {
  5. Query query = _entityManager.createQuery( "Select ProductDescriptors from ProductDescriptors pd where pd.products.sku = ?1" );
  6. query.setParameter( 1,sku );
  7. return new ArrayList<ProductDescriptors>( query.getResultList() );
  8. }

猜你在找的Java相关文章