【发布时间】:2018-12-19 16:35:39
【问题描述】:
在订单表中插入时遇到此错误
org.springframework.dao.InvalidDataAccessApiUsageException: detached entity passed to persist: org.vi.entities.LineItem; nested exception is org.hibernate.PersistentObjectException: detached entity passed to persist: org.vi.entities.LineItem
映射 这就是我映射我的课程的方式:
@Entity
public class Order implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "id", updatable = false, nullable = false)
private Long id;
@Column(name = "delivered", nullable = false)
private boolean delivered;
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "fk_order")
private Set<LineItem> lineItems= new HashSet<LineItem>();
}
@Entity
public class LineItem implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "id", updatable = false, nullable = false)
private Long id;
@Column(name="quantity", nullable = false)
private int quantity;
@ManyToOne
private Product product;
}
@Entity
public class Product implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "id", updatable = false, nullable = false)
private Long id;
@Column(name = "reference", unique = true, nullable = false)
private String reference;
@Column(name = "price", nullable = false)
private double price;
}
在我的表格中插入 这就是我在表中保存新行的方式
Product p1 = new Product("reference1",10000);
Product p2 = new Product("reference2",20000;
productRepository.save(p1);productRepository.save(p2);
LineItem li1 = new LineItem(6, p1);
LineItem li1 = new LineItem(9, p2);
lineItemRepository.save(li1);lineItemRepository.save(li2);
Set<LineItem> lineItems1= new HashSet<LineItem>();
lineItems1.add(li1);
lineItems1.add(li2);
Order o1 = new Order(false,lineItems1);
orderRepository.save(o1);
如果映射有问题,您能帮我吗?
【问题讨论】:
-
能否添加
Order的构造函数? -
@aBnormaLz public Order(boolean Delivered, Set
lineItems) { super(); this.delivered = 已交付; this.lineItems = lineItems; } -
你不使用事务?
-
@Christine 不,我不需要,我必须使用交易吗?
-
您不必这样做,但这样更安全。有时你会得到一个由前一个事务引起的“分离实体”。如果你不使用事务,我不知道是否会发生类似的事情。您在哪一行得到异常?
标签: java hibernate spring-data-jpa