JPA / Hibernate:可以将List属性与jpql查询相关联吗?

时间:2017-06-02 12:08:52

标签: java hibernate jpa

我有3张桌子:
发票(id,userReadeableNum,...)
订单(id,userReadeableNum,...)
InvoiceOrderRel(id,invoceId,orderId,insertDate,...)

我想在Invoice Class上使用Order类的userReadableNum创建一个List属性。

这样的事情:

@Entity
@Table(name="INVOICE")
@Immutable
public class Invoice implements Serializable{

    @Id
    @Column(name="INV_ID")
    private long invId;
    //many attributes

    /*I know that this annotation does not exists, i want to know if there's something similar*/
    @ByQuery("select o.userReadableNum from Order o join o.invoiceOrderList iol where iol.order.invId = :invId") 
    private List<String> orderNums;
    //etc...

1 个答案:

答案 0 :(得分:0)

我从来没有听说过类似的东西,但你可以创建一个@ManyToMany关系来解决这个问题。 JPA和hibernate将数据库表视为实体,因此他们期望PK和FK。

使用@ManyToMany关系时,orderNums属性需要为List<Order>而不是字符串列表。 InvoiceOrderRel将是您的联接表。

以下是有关@ManyToMany映射的一些信息。