在尝试保存产品之前,我总是保存一个Impost。
我可以保存Impost,但是当我尝试保存Product(具有Impost)时,它会失败。
我的实体是这样的:
public class Product {
@Id
@GeneratedValue(strategy = AUTO)
private long id;
@NotNull(message = "Name cant be null")
@Size(min = 1, message = "Name must have at least one char!")
private String name;
@NotNull(message = "Price cant be null")
private Double price;
@NotNull(message = "Type cant be null")
@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private Impost impost;
}
Impost的实体是这样的:
public class Impost {
@Id
@GeneratedValue(strategy = AUTO)
private Long id;
@NotNull(message = "The impost has a name!")
@Size(min = 1)
private String name;
@NotNull(message = "The impost percent is not null!")
private BigDecimal percent;
}
这是我要求提出的要求:
{
"name": "impost",
"percent": "50"
}
这是我对产品的要求:
{
"name": "prod",
"price": "10",
"impost": { "id": 1 }
}
但我总是得到这个错误:
Caused by: org.hibernate.PersistentObjectException: detached entity passed to persist: com.tax.entity.Impost
答案 0 :(得分:0)
问题是您在保留产品时未使用托管Impost
实例的原因。
在对产品进行反序列化之后设置一个受管理的产品,然后再保留产品:
product.setImpost(entityManager.getReference(product.getImpost().getId()))