【发布时间】:2017-11-24 08:56:44
【问题描述】:
我想向客户发送一个产品列表作为响应,我想将产品中的所有用户加入到产品列表中。
我尝试了很多东西,但我无法开始工作......
表格如下:
餐桌产品:
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>
我不知道我在这里缺少什么...任何提示? 提前谢谢你!
【问题讨论】:
-
来自那个代码:哪个代码?我们只有两个实体和一个 XML。但我们一开始不知道这个 XML 是如何生成的。
-
您的用户映射有点奇怪。
@Id是在 productId 上设置的,并且该变量是重复的,这最终会导致编译错误。 -
@MaciejKowalski 我更新了它
-
加入?加入哪里?在查询中?我们必须猜你的意思吗?
-
@DN1 已更新
标签: java jpa one-to-many many-to-one