Tôi đang gặp một số khó khăn khi hiểu cách Hibernate giao dịch với Generics và đã tự hỏi cách tốt nhất để hoàn thành mục tiêu của tôi.Sử dụng ngủ đông với generics
Cho một thực thể chung đơn giản:
@Entity
public class Box<T>{
private T t;
@Id
private long id;
public void setT(T t) {
this.t = t;
}
public T getT() {
return t;
}
public void setId(long id) {
this.id = id;
}
public long getId() {
return id;
}
}
Khi đi qua ngủ đông khởi, tôi nhận được ngoại lệ: ...has an unbound type and no explicit target entity. Resolve this Generic usage issue or set an explicit target attribute (eg @OneToMany(target=) or use an explicit @Type
Tôi gần như chắc chắn đây là bởi vì tôi đã không cho ngủ đông một danh sách các những hạn chế của những gì <T>
thực sự có thể là. Tôi biết bạn có thể chỉ định những thứ như targetEntity=String.class
ở trên t
trong chú thích, nhưng sau đó bạn mất tính linh hoạt của việc có generics. Tôi có thể giới hạn phạm vi của một chú thích sử dụng chung có thể chấp nhận được không? Ví dụ: Nếu tôi muốn các lớp học ChildA
, ChildB
, người được kế thừa từ lớp trừu tượng Parent
để có thể tồn tại ở đó. Ngoài ra, nó cũng sẽ có thể chấp nhận String
s. Có thể Hibernate
giải quyết một vấn đề như vậy không?
Làm thế nào để bạn mong đợi Hibernate để xây dựng một đối tượng chung chung như vậy? Nó có vẻ như bạn sẽ phải có một số loại phân biệt đối xử cột và xác định tất cả các đối tượng có thể có thể được sử dụng. Nhưng, tôi không biết liệu điều đó có thể xảy ra ở đây không. – Jeremy
Đó chính xác là những gì tôi đang hỏi! :) – Ryan