【发布时间】:2015-11-09 05:45:11
【问题描述】:
我正在使用 Angularjs、Spring jpa 存储库、休眠。 问题是“无法在订单表中保存客户的 ID”。 表名:Order、CustomerGlobal 订单表中客户的参考列名称是 customerGlobal_id。 订单属于客户。 Order 表有一个 customerGlobal_id 字段。
在Entity(Order)中,我已经定义了
@ManyToOne(optional = false) @JsonIgnore
CustomerGlobal customerGlobal;
订单属于一位客户。如果我指定一个 JoinColumn,hibernate 将在数据库中生成该列。所以,我认为那里没有问题。 我为 customerGlobal 字段添加了 Getter 和 Setter。
我使用的是JPA仓库,接口定义如下:
public interface OrderRepo extends JpaRepository<Order, Long>, JpaSpecificationExecutor<Order> {
...
}
我假设这也可以正常工作。
这里是html的相关部分:
<select ng-options="convertToInt(customer.id) as customer.name for customer in c" class="form-control " name="customerGlobal" ng-model="req.customerGlobal" required></select>
这是从关联控制器保存的表单的一部分。 c 的值是通过 get request on load 获得的。
[{"id":1,"name":"XYZ","contactPerson":"ABC","mobile":"1111111111","email":"abc@adef.com",}]
这似乎工作正常。我得到了表格中客户的下拉列表。
当我保存表单时,customerGlobal_id 和其他字段值通过 POST 发送,但 customerGlobal_id 没有保存到数据库中。
这似乎不是一个非常具体的问题。这是一个基本的多对一关系,不会被保存。我对Angularjs并不完全熟悉。所以请帮我解决这个问题。提前致谢。
【问题讨论】:
-
您是否使用 Spring Data REST 来公开实体的端点?您还可以举一个 actual 请求的示例吗?
-
是的,使用 spring data rest with spring boot。
-
你要设置hibernate映射的CASCADE
-
实际上,在创建订单之前,客户是在单独的屏幕上添加的,所以也许我不必在保存订单之前使用级联并保存客户。