java – 右边加入jpa
发布时间:2020-12-15 02:08:26 所属栏目:Java 来源:网络整理
导读: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",re
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查询来实现它. 解决方法
您只需要在查询中切换实体类(在大多数情况下,右外连接只是左外连接的反转):
select n.id,m.seller_id from NewRequest n left join n.mappingCollection m 正如我在上面的评论中已经建议的那样:您应该从属性中删除_id后缀,因为这样可以更好地阅读和理解. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |