Java 右键加入jpa
NewRequest.javaJava 右键加入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
@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
。