Tôi có một số bản ghi đã xóa một cách hợp lý (ví dụ: active=false
) đang gây ra sự cố với ánh xạ @ManyToOne
do nhiều cột kết quả được trả về bởi cột nối.ManyToOne với mệnh đề
tôi cần phải chỉ bao gồm hồ sơ, nơi active=true
mà tôi nghĩ tôi có thể đạt được bằng cách:
@ManyToOne
@NotFound(action = NotFoundAction.IGNORE)
@JoinColumn(name = "site_id", referencedColumnName = "site_id", insertable = false, updatable = false)
@WhereJoinTable(clause = "active=true")
private Site site;
Tuy nhiên, nó có vẻ như các WhereJoinTable
không được sử dụng bởi Hibernate (có lẽ chỉ có giá trị của nó OneToMany
?) Kể từ active=true
không hiển thị trong SQL được tạo (nhật ký) và sự cố vẫn tiếp diễn.
Có thể bao gồm mệnh đề where để tham gia ManyToOne
và cách thực hiện không?
là nó có thể tái lập bản đồ cùng một bảng và đặt một bộ lọc trên bản đồ, tức là vì vậy tôi đã chỉ đọc 'ActiveSite' thực thể? – pstanton
Có, bạn có thể làm điều đó. Nhưng như mong đợi kết nối giữa các trường hợp của ActiveSite và trang web sau đó không được biết đến Hibernate. Vì vậy, các thay đổi được thực hiện cho Trang web tương ứng được nhân đôi thành ActiveSite chỉ khi nó được đọc (hoặc làm mới) từ cơ sở dữ liệu. –
yep có thể chấp nhận được trong trường hợp này, tuy nhiên tôi đang cố gắng sử dụng '@Where (clause =" active = true ")' trên '@ Entity' và hibernate đang chuyển nó thành' site0_.active = site0_. true' .. nếu bạn có thể giúp tôi giải quyết điều đó tôi sẽ cung cấp cho bạn đánh dấu (kể từ khi bạn có quyền trong câu trả lời của bạn ..) cảm ơn sự giúp đỡ! – pstanton