java如何用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>
我不知道我在这里错过了什么。。。有什么建议吗? 提前谢谢你
# 1 楼答案
在您的映射中,有一些我不太理解的事情,但是请尝试以下事情
在
User
除去
如果不是为了什么特殊目的,我不知道你为什么要把它放在那里
改变
然后再试一次
为了让代码更清晰,您可能还需要更改
在
Product
在
User