2013-06-02 25 views
5

Im sử dụngXác thực Bean không có trên Proxy Hibernate? Hành vi mong đợi?

  • hibernate-core-4.0.1.Final
  • hibernate-validator-4.2.0.Final

Tôi có một lười biếng nạp Entity

@NotNull 
@OneToOne(fetch = FetchType.LAZY,optional = false,cascade = CascadeType.PERSIST) 
@JoinColumn(name="library_id") 
private Library library; 

public Library getLibray() { 
    return library; 
} 

và mặc địnhValidator

private final ValidatorFactory factory = Validation 
      .buildDefaultValidatorFactory(); 
private final Validator val = factory.getValidator(); 

Khi tôi đang cố gắng xác thực các đối tượng được đính kèm và không được đính kèm có chú thích với @NotNull, @Size và v.v. Mọi thứ đều hoạt động tốt. Nhưng khi tôi tải một thực thể thông qua tải Lazy và cố gắng xác nhận nó. Trình xác thực không thành công mỗi lần. Điều này có vẻ là do thực tế là im nhận được một Hibernate Proxy Object.

tôi có thể nhận arround "vấn đề" này một cách dễ dàng bằng cách chỉ unproxying nó. (Nhưng điều này không phải là quá thuận lợi trong hoàn cảnh của tôi)

Đây có phải là hành vi mong đợi? Tôi có nhận được cùng một hành vi trong OpenJPA, EclipseLink ....?

Chúc bạn một ngày Chủ nhật tốt đẹp;) Tôi hy vọng tôi đã làm cho câu hỏi rõ ràng?

Trả lời

5

Sự cố có thể được giải quyết bằng cách chú thích các phương thức thay vì các trường.

Điều này được thảo luận thêm trong số HVAL-13 và cũng trong HV-535. Nếu thay thế chú thích là không khả thi, giải pháp được đề xuất trong báo cáo lỗi đang sử dụng HibernateProxyValidator thay thế.

+0

Thx Cả hai liên kết đều rất hữu ích. Tôi không thể upvote câu trả lời của bạn mặc dù :(Nhưng đây là "Giải pháp" – Marvin

+0

Thx người đàn ông của bạn hữu ích.;) Tôi muốn tham gia nhiều hơn trong communnity;) – Marvin

+0

@Marvin Làm thế nào bạn sửa chữa vấn đề của bạn? Didnt làm việc cho tôi thậm chí chú thích các phương pháp, đó là những gì tôi đã làm ban đầu. BTW, mỏ là mối quan hệ 'OneToMany' nếu nó quan trọng. – Quincy

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