【发布时间】:2015-10-22 14:34:40
【问题描述】:
NewRequest.java
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(nullable = false)
private Long id;
@Size(max = 2147483647)
@Column(length = 2147483647)
private String data;
@JoinColumn(name = "buyer_id", referencedColumnName = "id")
@ManyToOne(fetch = FetchType.LAZY)
private Buyer buyer_id;
@OneToMany(mappedBy = "newrequest_id", fetch = FetchType.LAZY)
private Collection<Mapping> mappingCollection;
Mapping.java
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(nullable = false)
private Long id;
@JoinColumn(name = "seller_id", referencedColumnName = "id")
@ManyToOne(fetch = FetchType.LAZY)
private Seller seller_id;
@JoinColumn(name = "newrequest_id", referencedColumnName = "id")
@ManyToOne(fetch = FetchType.LAZY)
private NewRequest newrequest_id;
可以说,我有这样的记录。
new_request:
id(PK) | data | buyer_id(FK)
------------------------------
1 | data1 | 1
2 | data2 | 1
3 | data3 | 2
映射:
id(PK) | newrequest_id(FK) | seller_id(FK)
------------------------------------------
1 | 1 | 1
注意:考虑买家和卖家两个不同的表存在。
我想要所有是否与卖家映射的 new_request。所以,预期的输出:
id | data | buyer_id | seller_id
------------------------------------
1 | data1 | 1 | 1
2 | data2 | 1 |
3 | data3 | 2 |
我在 JPA 中尝试了以下查询:
select n.id,n.data,n.buyer_id,m.seller_id from Mapping m left join m.newrequest_id n
它只给出一个数据(输出第 1 行)。
我使用本机查询通过右连接获得了结果。但我想使用 JPA 查询来实现它。
【问题讨论】:
-
您没有提供实体模型,这将有助于理解您的查询。通常我会在你的
NewRequest类中推荐一个mappedBy字段。另一句话:不要调用您的 XToX 字段..._id- 您在 JPA 中引用实体,而不是 ID。所以最好使用newrequest而不是newrequest_id。
标签: java postgresql jakarta-ee jpa