2013-06-02 36 views
5

即時通訊使用Hibernate代理上的Bean驗證失敗?預期的行爲?

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

我有一個延遲可裝入實體

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

public Library getLibray() { 
    return library; 
} 

和defaultValidator

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

當我試圖驗證未附加和附加實體註釋@NotNull, @Size等等。 一切工作正常。但是,當我通過Lazy Load加載一個實體並嘗試驗證它。 驗證程序每次都會失敗。這似乎是因爲我得到一個Hibernate代理對象。

我可以只unproxying得到它角落找尋這個「問題」很容易。(但事實並非如此有利的在我的處境)

這是預期的行爲?我是否在OpenJPA,EclipseLink ....中獲得相同的行爲?

週日愉快的傢伙;)我希望我確實讓問題清楚了嗎?

回答

5

問題可以通過註解方法而不是字段來解決。

這在HVAL-13問題以及HV-535中進一步討論。如果替換註釋不可行,則錯誤報告中建議的解決方案使用HibernateProxyValidator來代替。

+0

Thx這兩個鏈接都非常有幫助。我不能upvote你的答案雖然:(但這是「解決方案」 – Marvin

+0

Thx男子您的幫助;;)我想參與更多的社區;) – Marvin

+0

@Marvin你是如何解決你的問題?我甚至沒有注意到方法,這是我最初做的。順便說一句,如果它很重要,我的是一對多關係。 – Quincy