Java 右键加入jpa

Java 右键加入jpa,java,postgresql,jakarta-ee,jpa,Java,Postgresql,Jakarta Ee,Jpa,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", ref

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;  
@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;
比如说,我有这样的记录

新请求:

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
映射:

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
注:考虑买卖双方存在两个不同的表。< /P> 我想要所有新的_请求,无论是否与卖家对应。因此,预期产出:

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查询来实现它。

您只需要切换查询中的实体类(在大多数情况下,右外部连接只是左外部连接的倒数):


正如我在上面的评论中所建议的那样:您应该从属性中删除
\u id
后缀,因为这更便于阅读和理解。

您没有给出实体模型,这有助于理解您的查询。通常,我建议在
NewRequest
类中使用
mappedBy
字段。另一句话:不要调用XToX字段
…\u id
——您引用的是JPA中的实体,而不是id。因此,最好使用
newrequest
而不是
newrequest\u id