1

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

@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);

请问有什么帮助吗?:)

4

1 回答 1

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;
于 2013-10-15T18:10:22.977 回答