Bạn định cấu hình chú thích trong mã ví dụ sau đây như thế nào? Tôi muốn gắn bó với chú thích JPA chỉ và tránh các phụ thuộc cụ thể của Hibernate. Mã dưới đây có đúng không?Lớp trừu tượng được thừa kế với JPA (+ Hibernate)
@Entity
public class RefExample extends RefData {
}
(Sẽ có nhiều phiên bản của các lớp này, RefSomeOtherExample, vv, và bảng một db mỗi lớp. Một số có thể thêm các trường bổ sung (cột) nhưng hầu hết chỉ đơn giản là sẽ tận dụng các lĩnh vực cơ bản kế thừa từ "RefData" lớp cơ sở)
cơ sở lớp:.
@Entity
public abstract class RefData {
private long id;
private String code;
private String desc;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(unique = true, nullable = false)
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
@Column(unique = true, nullable = false, length=8)
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
@Column(unique = true, nullable = false, length=80)
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}
Cuối cùng, tôi muốn tạo ra các script tạo giản đồ từ này sử dụng lớp SchemaExport Hibernate của. Trong trường hợp trên, hai lớp này sẽ chỉ dẫn đến việc tạo ra một bảng duy nhất có tên "RefExample" với ba cột từ "RefData". Điều này có hiệu quả không?
@Crusader Xem tại đây: http://stackoverflow.com/questions/2700680/table-per-subclass-inheritance-relationship-how-to-query-against-the-parent-clas/3017146#3017146 cách tôi giải quyết các vấn đề về hiệu suất khi giao dịch với thừa kế. ** Nếu bạn muốn sử dụng chiến lược TABLE PER CLASS, cơ sở dữ liệu đích phải hỗ trợ chiến lược tạo danh tính **. –
Không chắc chắn 100% nhưng tôi nghĩ rằng MappedSuperclass có thể là lựa chọn tốt nhất của tôi. Tất cả các bảng này thực sự là để lưu trữ các giá trị được trình bày trong các trường thả xuống được gán (một đến nhiều) cho các bản ghi dữ liệu thực tế. – Manius
Có thể truy vấn (HQL hoặc JPQL) trên các thuộc tính có trong siêu lớp được chú thích với @MappedSuperclass không – Sunil