gpt4 book ai didi

java - 右加入jpa

转载 作者:搜寻专家 更新时间:2023-11-01 03:49:44 26 4
gpt4 key购买 nike

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;

映射.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;

比方说,我有这样的记录。

新请求:

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)。

我使用 native 查询通过右连接获得了结果。但我想使用 JPA 查询来实现它。

最佳答案

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

select n.id, n.data, n.buyer_id, m.seller_id 
from NewRequest n left join n.mappingCollection m

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

关于java - 右加入jpa,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31737269/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com