Tôi gặp sự cố khi xóa một mục khỏi danh sách. Danh sách được định nghĩa trong một siêu lớp, nhưng các chú thích Hibernate được áp dụng cho các trình truy cập thuộc tính trong một lớp con. Có hai phương thức trong siêu lớp xử lý danh sách. Phương thức "add" hoạt động tốt, nhưng "remove" không thay đổi. Tôi đã kiểm tra các thiết lập Cascade của mình, và tôi dường như có những điều đúng đắn. Tôi đang làm điều gì đó không thể. Nếu không, tôi có làm gì không chính xác?Hibernate: Xóa mục khỏi Danh sách không tồn tại
Dưới đây là lớp học của tôi:.
@Entity
abstract class Temporal<T> {
@Id
@GeneratedValue
private Long id;
@Version
private Integer version = null;
@Transient
protected List<T> content = new ArrayList<T>();
public void remove(T value) {
// business logic ...
content.remove(value);
}
public void add(T value) {
// business logic ...
content.add(value);
}
}
@Entity
@AccessType("property")
class TemporalAsset extends Temporal<Asset> {
@OneToMany(cascade = CascadeType.ALL, mappedBy = "temporal")
public List<Asset> getContent() {
return super.content;
}
protected void setContent(List<Asset> list) {
super.content = list;
}
}
tôi sử dụng một thể hiện của lớp TemporalAsset như sau (lưu ý rằng tôi chỉ sử dụng "làm mới" phương pháp để chứng minh hành vi trong danh sách này không tồn tại một cách chính xác thậm chí nếu tôi tuôn ra hoặc đóng phiên và mở phiên mới):
temporalAsset.add(value1);
temporalAsset.getContent().size() == 1; // true
session.update(temporalAsset);
session.refresh(temporalAsset);
temporalAsset.getContent().size() == 1; // true
temporalAsset.remove(value1);
temporalAsset.getContent().size() == 0; // true
session.update(temporalAsset);
session.refresh(temporalAsset);
temporalAsset.getContent().size() == 0; // false, its 1
Cảm ơn.
Đó là nó! cảm ơn rất nhiều – codefinger
CascadeType.DELETE_ORPHAN không được chấp nhận. Có cách nào khác không? –
sử dụng @OneToOne (orphanRemoval = true) hoặc @OneToMany (orphanRemoval = true) theo http://docs.jboss.org/hibernate/orm/3.5/api/org/hibernate/annotations/CascadeType.html – FoxyBOA