簡體   English   中英

給定一個Java對象,我可以通過休眠確認它的bean是否可持久

[英]Given a java object can I confirm its a bean persist-able by hibernate

有時候,我想傳遞一個對象來說一個審計層,其唯一的工作就是保留實體(無論是哪種類型),但是由於這是一個公共API,因此我想確定傳遞的對象是一個休眠實體Bean,然后僅嘗試saveOrUpdate()

我敢肯定,在運行時,您可以使用某種jedi-reflection-trick來找出您的實體是Hibernate實體的天氣(我不建議這樣做),但是,在通常情況下,您不必擔心它的不是休眠實體, Session.saveOrUpdate()方法將引發HibernateException解釋其無法保存和/或更新它的原因。

您無法采取任何措施來防止您的公共方法被任意對象類型調用。 您可以做的是記錄您的API,以了解它期望的實體類型以及如果傳遞了一些不同的東西而導致的行為。

Session接口上有一些采用Class參數的方法,例如createCriteria(Class)getCurrentLockMode(Class) 我沒有嘗試過,但是您可以嘗試將對象的類傳遞給這些方法之一。 如果幸運的話,如果它不是實體類,則將引發異常。

不優雅,但這就是我所擁有的:)

http://docs.jboss.org/hibernate/core/3.5/api/org/hibernate/SessionFactory.html#getClassMetadata(java.lang.Class) 從JavaDoc 返回:與給定實體關聯的元數據; 如果未映射任何此類實體,則可以為null。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM