繁体   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