我对抽象数据建模的概念相当熟悉,所以我尝试使用 Spring Boot 制作一个 API,包括使用 Hibernate/Javax 持久性的 String Boot Starter Data JPA。
我想要做的是能够通过 REST 发布请求(使用 Postman 进行测试)。我有这个适用于普通 POJO,但是我有一个 JoinColumn,它都有点梨形。
例如,我有以下内容:
@Entity
@Table( name = "customer_tbl" )
public class Customer
{
@Id
@GeneratedValue( strategy = GenerationType.IDENTITY )
private long customerId;
@Column( name = "customer_name", nullable = false, unique = true )
private String customerName;
......作为父母,有点像,带着下面的孩子......
@Entity
@Table( name = "scheme_tbl" )
public class Scheme
{
@Id
@GeneratedValue( strategy = GenerationType.IDENTITY )
private long schemeId;
@ManyToOne( fetch = FetchType.LAZY, optional = false )
@PrimaryKeyJoinColumn( name = "customer_id" )
@OnDelete( action = OnDeleteAction.CASCADE )
@JsonProperty( "customer" )
@NotNull
private Customer customer;
@Column( name = "scheme_name", nullable = false, unique = true )
private String schemeName;
这个想法是,对于每个customer
,可能有许多scheme
条目。
我想通过 REST 发布一个对象,并引用该对象所属scheme
的父级,就像这样customer
scheme
{
"customer": {
"customer_id" : "1",
"customerName" : "TestCustomer"
},
"schemeName": "TestScheme"
}
(我已经尝试了很多变种customer
)
我已经尝试了各种方法,customer
直到null
我@RequestBody
添加了@JsonProperty
. 这被认为@RequestBody
是一个完整的customer
对象,但它真的不喜欢它并且有一个unsaved transient entity
例外。现在的问题是,它仍然没有达到我希望达到的效果——通过传入一个客户参考,从而customer_id
正确设置列(或通过 fk/lookup 建立的关联)。
这对 REST 可行吗?我在类方法中进行了类似的工作,只需${customerId}
使用 Thymeleaf 设置表单,它也返回一个scheme
对象并愉快地持续存在