[英]How to join table columns with JPA?
我想发送产品列表作为对客户的回应,我想将所有用户从产品列表加入产品列表。
我已经尝试了很多东西,但是我无法工作...
表格如下:
餐桌产品:
Product_id Product_Name
0 Shoe
1 Bike
表用户:
Product_id User_Id User_Name
1 3 Jake
1 5 Tom
0 9 Bob
我想列出所有使用该产品的用户的产品:
Exp反应:
<products>
<product>
<productName>Shoe</productName>
<productId>0</productId>
<users>
<user>
<userId>9</userId>
<userName>Bob</userName>
</user>
</user>
</product>
<product>
<productName>Bike</productName>
<productId>1</productId>
<users>
<user>
<userId>3</userId>
<userName>Jake</userName>
</user>
<user>
<userId>5</userId>
<userName>Tom</userName>
</user>
</user>
</product>
</products>
产品:
@Entity
@Table(name = "Products")
@NamedQueries ({
@NamedQuery(name = "Product .selectAll", query = "SELECT p FROM Product p")
})
public class Product {
@Id
@Column(name = "Product_id ")
private Integer productId;
@Column(name = "Product_name")
private String productName;
@OneToMany(mappedBy = "usedProductId", fetch=FetchType.EAGER)
private List<User> users;
//...
}
用户:
@Entity
@Table(name = "Users")
@NamedQueries ({
@NamedQuery(name = "User.selectAll", query = "SELECT u FROM User u")
})
public class User {
@Column(name = "User_id")
private Integer userId;
@Column(name = "User_name")
private String userName;
@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name="Product_id")
private Product usedProductId;
//...
}
从该代码中,我得到了产品列表,但没有用户列表……响应看起来像:
<products>
<product>
<productName>Shoe</productName>
<productId>0</productId>
</product>
<product>
<productName>Bike</productName>
<productId>1</productId>
</product>
</products>
我不知道我在这里缺少什么...任何提示? 预先谢谢您!
在您的映射中,有些事情我不太了解,但请尝试以下操作
在User
去掉
@Id
@Column(name = "Product_id")
private Integer productId;
如果它不是出于某些特殊目的而存在,我不确定为什么要在那里
更改
// @Column(name = "User_id")
@Id(name = "User_id")
private Integer userId;
然后再试一次
为了使代码更清晰,您可能还需要更改
Product
// @OneToMany(mappedBy = "usedProductId", fetch=FetchType.EAGER)
@OneToMany(mappedBy = "product", fetch=FetchType.EAGER)
private List<User> users;
在User
@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name="Product_id")
private Product product;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.