2012-04-30 50 views
6

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?

Trả lời

2

@WhereJoinTable không được hỗ trợ với @ManyToOne. Có lỗi HHH-4335 về chủ đề được mở từ năm năm. Tôi không biết về bất kỳ giải pháp nào, ngoại trừ việc sử dụng chế độ xem (trong trường hợp truy cập chỉ đọc) như được đề cập trong báo cáo lỗi.

+0

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

+0

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. –

+0

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

1

@JoinColumnOrFormula anotation là một cách giải quyết phù hợp

+0

Đây không phải là câu trả lời cho câu hỏi, vui lòng sử dụng nhận xét cho các cuộc thảo luận và các bài đăng không liên quan đến câu trả lời – Moseleyi

Các vấn đề liên quan