Tôi có hai thực thể A và B.Hibernate @JoinFormula
public class A{
@Id
@GeneratedValue
private Integer id;
private String uuid;
...
}
Các UUID được đưa ra bên ngoài; ID có thể được xem như là phiên bản.
Bây giờ, tôi muốn tham chiếu A trong B sao cho tôi có uuid được lưu trữ trong B và tự động chọn A có uuid theo và id cao nhất.
Những gì tôi cố gắng là:
public class B{
@Id
@GeneratedValue
private Integer id;
private String uuidOfA;
@ManyToOne
@JoinFormula(value="SELECT a.id FROM A a WHERE v.uuid = uuidOfA AND v.id = (SELECT max(x.id) FROM A x WHERE x.uuid = v.uuid)", referencedColumnName="id")
private A a;
...
}
này sẽ tạo ra một cột chứa id của một trong B và ném một ngoại lệ nếu tôi cố gắng tồn tại một đối tượng. Tôi cũng đã thử @JoinColumnsOrFormulas mà không có may mắn.
Ai đó có thể cho tôi một gợi ý về cách thực hiện điều này (trong Hibernate 3.5 btw) không?
Cảm ơn!
Chấp nhận nó để mọi người có thể thấy rằng công trình này. – ssedano
Vâng. Nó được chấp nhận. Nhưng nó có dự tính gì không? Làm thế nào điều này chọn id cao nhất ở đây? –