gpt4 book ai didi

java - 如何定义 POJO 来保存提交表单中的数据列表?

转载 作者:行者123 更新时间:2023-12-02 02:38:41 24 4
gpt4 key购买 nike

我想将项目列表插入到从多个选择表单提交的数据库表中。

我的提交表单是:

<form method="post" action="${pageContext.request.contextPath }/">
<div>
<label>User:</label>
<select name="customer">
<option value="">Select Customer</option>
<c:forEach var="c" items="${ cList }">
<option value="${ c.id }">${ c.name }</option>
</c:forEach>
</select>
</div><br>
<div>
<label>Hobby:</label>
<select name="product" multiple size="8">
<!-- <option value="">Select Items</option> -->
<c:forEach var="p" items="${ pList }">
<option value = "${ p.id }">${ p.productName }</option>
</c:forEach>
</select>
</div>
<br><br>
<input type="submit" value="Send">
</form>

到目前为止我已经做到了:

我的交易POJO:

@Entity
@Table(name = "transcation")
public class Transcation {

@Id
@GeneratedValue
@Column
private Long id;
@JoinColumn
@OneToOne
private Customer customer;
@JoinColumn
@OneToMany
private List<Product> product;
...

我的产品POJO:

@Entity
@Table(name = "product")
public class Product {

@Id
@GeneratedValue
@Column
private Long id;
@Column
private String productName;
...

但是当我运行这个项目时,我得到了这种类型的交易和产品数据库表:

Product table in database

Transaction table in database

我需要在交易表中插入客户交易以及商品列表和客户 ID。

最佳答案

我假设数据库表是从您定义的实体生成的。因此生成这样的表是可以的。但问题是您正在解释 TransasactionProduct 之间的错误关系。

思考 - 这真的是一个 OneToMany 关系吗?我想不会。因为 Transaction 不仅包含 Product 列表,而且 Product 也可以位于多个 Tracnsaction 中。所以这应该是一个单向的ManyToMany 关系。

如果我理解您的业务,那么只需注释您的 Transaction 实体,如下所示(对于 ManyToMany 关系使用 @JoinTable

@Entity
@Table(name = "transcation")
public class Transcation {

@Id
@GeneratedValue
private Long id;

@OneToOne
@JoinColumn(name="customer_id")
private Customer customer;

@ManyToMany
@JoinTable(name = "transaction_product",
joinColumns = @JoinColumn(name = "transaction_id"),
inverseJoinColumns = @JoinColumn(name = "product_id"))
private List<Product> productList;
...

拥有@JoinTable实际上在数据库中创建了单独的映射表tranasction_product,并具有transactionproduct的外键引用> 表主键。

从 UI 保存此关系

假设您从提交中选择了客户产品列表。现在只需创建一个交易。只需分配值并通过打开的 session 保存您的Transasction对象

Transaction transaction = new Transaction();
transaction.setCustomer(customer);
transaction.setProductList(productList);

关于java - 如何定义 POJO 来保存提交表单中的数据列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45832708/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com