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

标签 java jpa entity

Netbean 6.9 从此 SQL Server 2008 表生成了以下 JPA 实体类: alt text

我想获取所有具有特定 SKU 值的 ProductDescriptors。像这样:

SELECT * FROM ProductDescriptors WHERE SKU='something'

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

谢谢。

@Entity
@Table(name = "ProductDescriptors")
@NamedQueries({
    @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")})
public class ProductDescriptors implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @Column(name = "DescriptorID")
    private Integer descriptorID;
    @Basic(optional = false)
    @Column(name = "LanguageCode")
    private String languageCode;
    @Basic(optional = false)
    @Column(name = "Title")
    private String title;
    @Basic(optional = false)
    @Column(name = "IsDefault")
    private boolean isDefault;
    @Basic(optional = false)
    @Column(name = "Body")
    private String body;
    @JoinColumn(name = "SKU", referencedColumnName = "SKU")
    @ManyToOne(optional = false)
    private Products products;

...

最佳答案

像这样:

@PersistenceContext( unitName = "youPersistenceUnitHere" )
private EntityManager _entityManager;

public List<ProductDescriptors> getProductDescriptorsBySku( String sku ) {
   Query query = _entityManager.createQuery( "Select ProductDescriptors from ProductDescriptors pd where pd.products.sku = ?1" );
   query.setParameter( 1, sku );
   return new ArrayList<ProductDescriptors>( query.getResultList() );
}

关于java - JPA:查询以根据实体类中定义的外键值获取结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4180115/

相关文章:

java - Android:如何知道运行时小部件应用了哪种样式

java - hibernate 映射: using same object multiple times

java - 使用版本的 Hibernate 乐观锁定不起作用

java - 枚举不是枚举映射的有效类型

java - 有没有办法根据参数值使 MySQL 查询行为不同?

java - 从@entity中的属性文件加载值

java - Android 中带有 fragment 的微调器

java - 如何从 Jersey 中检索映射的异常?

c# - DDD 中的域服务到底意味着什么以及如何实现它?

java - @BatchSize 在 Hibernate 中如何工作深入解释?