从对象中获取休眠实体名称
Getting hibernate entity name from the object
有什么方法可以找出hibernate对象加载的实体名称是什么?
我有一个 class 映射到 2 个不同的表(有人认为这是个好主意):
class MyEntity {
<some fields>
}
<hibernate-mapping>
<class name="MyEntity" table="MyEntity" entity-name="MyEntity">
...
</class>
<class name="MyEntity" table="MyEntityOld" entity-name="MyEntityOld">
...
</class>
</hibernate-mapping>
获取对应实例:
res = getSession().createCriteria("MyEntity")
if (res == null) {
res = getSession().createCriteria("MyEntityOld")
}
return res;
这很好用,问题是我不想重构数百个地方只是为了到处传递该实体的接收方式。此外,还有很多继承自 MyEntity 和 MyEntityOld 的子classes(比如将真实的 classes 镜像到它的“旧”doppelgängers)。
那么有什么方法可以只用对象
来获取实体名称
PS:object.getClass() 显然行不通,因为 class 有一个真正的“MyEntity”
我认为这是解决您问题的好方法。
Hibernate get entity name value
以 MyEntity 作为基础 class 并以 MyEntityNew 和 MyEntityOld 扩展 MyEntity,将允许您根据需要区分这两个对象。
<hibernate-mapping>
<class name="MyEntityNew" table="MyEntity" entity-name="MyEntityNew">
...
</class>
<class name="MyEntityOld" table="MyEntityOld" entity-name="MyEntityOld">
...
</class>
</hibernate-mapping>
您可能还需要为 MyEntity
设置一个 @MappedSuperclass
注释。
有什么方法可以找出hibernate对象加载的实体名称是什么? 我有一个 class 映射到 2 个不同的表(有人认为这是个好主意):
class MyEntity {
<some fields>
}
<hibernate-mapping>
<class name="MyEntity" table="MyEntity" entity-name="MyEntity">
...
</class>
<class name="MyEntity" table="MyEntityOld" entity-name="MyEntityOld">
...
</class>
</hibernate-mapping>
获取对应实例:
res = getSession().createCriteria("MyEntity")
if (res == null) {
res = getSession().createCriteria("MyEntityOld")
}
return res;
这很好用,问题是我不想重构数百个地方只是为了到处传递该实体的接收方式。此外,还有很多继承自 MyEntity 和 MyEntityOld 的子classes(比如将真实的 classes 镜像到它的“旧”doppelgängers)。 那么有什么方法可以只用对象
来获取实体名称PS:object.getClass() 显然行不通,因为 class 有一个真正的“MyEntity”
我认为这是解决您问题的好方法。
Hibernate get entity name value
以 MyEntity 作为基础 class 并以 MyEntityNew 和 MyEntityOld 扩展 MyEntity,将允许您根据需要区分这两个对象。
<hibernate-mapping>
<class name="MyEntityNew" table="MyEntity" entity-name="MyEntityNew">
...
</class>
<class name="MyEntityOld" table="MyEntityOld" entity-name="MyEntityOld">
...
</class>
</hibernate-mapping>
您可能还需要为 MyEntity
设置一个 @MappedSuperclass
注释。