JPQL ManyToMany @JoinTable选择查询?

时间:2013-10-15 17:39:18

标签: ejb netbeans-7 jpql

我有2个实体,即产品和交易,这2个实体通过多对多关系链接。我的交易实体中有以下内容。

@ManyToMany(cascade={CascadeType.ALL})
    @JoinTable(name="Transaction_Product")

当我运行我的项目时,我的数据库中将创建3个表表,它们分别是Transaction,Product和Transaction_Product。我运行项目时会自动生成Transaction_Product。

我可以通过以下查询从我的交易表中获取项目。

Query q = em.createQuery("SELECT t FROM Transaction t WHERE t.fulfillStatus = 0");

我的问题是,如何从Transaction_Product表中获取项目?

我尝试了类似下面的查询,但没有用。

 Query q = em.createQuery("SELECT bt FROM Transaction_Product bt WHERE bt.ProductID = 1);

请帮忙吗? :)

1 个答案:

答案 0 :(得分:1)

检查是否存在使用指定产品的交易:

Query q = em.createQuery("SELECT t FROM Transaction t join t.products p WHERE p.id = :id");

假设Transaction类有字段:

@ManyToMany(cascade={CascadeType.ALL})
    @JoinTable(name="Transaction_Product")
private Set<Product> products;