Tôi đang sử dụng chú thích Hibernate để duy trì các lớp học của mình. Hiện tại tôi đang sử dụng chiến lược sau đây để lập bản đồ các lớp họcHibernate Polymorphic HQL SELECT statement
Tôi có lớp trừu tượng là lớp Gốc và tôi có hai lớp con kế thừa từ số Mẹ, Cha.
tôi ánh xạ nó như thế:
@MappedSuperclass
public abstract class Parent {
private int age;
private String name;
...
}
Và hai lớp khác được khai báo như thế này:
@Entity
public Class Father extends Parent {
private boolean haveMustash;
...
}
Vì vậy, về cơ bản là kịch bản là "Bảng mỗi lớp".
Bây giờ tôi muốn tạo một câu lệnh HQLnate HQL sẽ cập nhật tuổi của một phụ huynh, bất kể đó là loại (mẹ, cha). phụ huynh sẽ được tra cứu bằng cách sử dụng cột tên, đó là duy nhất trong cả hai bảng. nhưng tôi không biết chỉ nhìn vào tên nếu đó là Mẹ hoặc Cha. Làm thế nào tôi có thể tạo một câu lệnh HQL sẽ xem xét cả hai bảng và trả về đúng thực thể để cập nhật?
Tôi nghĩ về một cái gì đó như thế này: (nhưng tôi không có một ý tưởng nếu nó thậm chí có thể)
Parent parent = hibernateTemplate.find("from Mother,Father where name="
+ name);
Nó không hoạt động, tôi nhận được phụ huynh không được ánh xạ (Hibernate ngoại lệ) – stdcall
Vâng, sau đó bản đồ nó. –
Ý tưởng chung là để nó không được lập bản đồ, đó là một lớp trừu tượng, Cha & Mẹ lấy bản đồ cơ bản của nó từ nó. – stdcall