Sau đây không hoạt động:Hibernate: Được sử dụng mappedBy trên lớp mở rộng một lớp khác được chú thích là lớp JoinSubclass?
@Entity
class Owner {
@OneToMany(mappedBy="owner", cascade = {CascadeType.ALL})
protected Set<B> getBSet() {
..
}
}
@Entity
@Inheritance(strategy=InheritanceType.JOINED)
class A {
@ManyToOne
public Owner getOwner() {
...
}
}
@Entity
class B extends A {
}
Nó gây ra một ngoại lệ như vậy: org.hibernate.AnnotationException: mappedBy tham khảo một tài sản thực thể mục tiêu không rõ: B.user trong chủ căn hộ.
Tôi đang cố gắng tránh sao chép thuộc tính "chủ sở hữu" vào lớp B (do đó sẽ "không chuẩn hóa" và sao chép khóa chủ sở hữu vào cả hai bảng được tạo cho thực thể A và B). Ngoài ra, tôi thực sự muốn có A và B trong một bảng riêng biệt và không phải sử dụng một phân biệt đối xử bằng cách sử dụng kế thừa SingleTable.
Ngoài ra, tôi không thể tìm ra cách làm điều gì đó tương tự bằng cách sử dụng @OneToOne giữa A và B (và không có B mở rộng A).
Bạn có thực sự chạy nó và tạo Nhà máy phiên không? Cảm ơn - Tôi sẽ kiểm tra lại. Tôi đã không sử dụng chính xác cùng một mã này - tôi chỉ lấy từ một ví dụ thực sự mà tôi đã làm điều tương tự ... – GreenieMeanie
Vâng tôi đã chạy nó. Đó là lý do tôi đề cập đến @ID. SF phàn nàn về @id bị thiếu. Sau đó SF xây dựng được. Tôi có thể thề rằng tôi đã gõ câu đó, hah! Chúc may mắn! – danieljimenez