【发布时间】:2014-12-04 13:38:29
【问题描述】:
我正在尝试从休眠中获取尽可能多的元数据,但我正在努力解决一些限制,例如唯一性。
我一直在尝试使用:
AbstractEntityPersister metadata = (AbstractEntityPersister) sessionFactory.getClassMetadata( clazz );
boolean[] uniqueness = metadata.getPropertyUniqueness();
但似乎唯一性数组总是对所有属性说false,我也使用EntityPersister 来获取可空性(getPropertyNullability),它工作正常。
有什么想法吗?
(顺便说一句,我正在使用 HBM,如果它很重要的话。几乎想诉诸直接解析 HBM 文件,但似乎是一个非常丑陋的解决方案)。
【问题讨论】:
-
只是为了确定,
<property name="foo" unique="true" />的 propertyUniqueness false ? -
是的,如果不清楚,抱歉。我得到一个propertiesNames.length大小的数组,但所有的值都是假的。
-
您是否使用此 XML 配置创建了数据库?因为如果现有数据库不包含唯一性,则仅此配置不会改变运行时的情况。
unique="true"设置只有在实际创建数据库时才会生效。 -
是的,数据库中的几个属性上都有
UNIQUE CONSTRAINT。我认为问题正如你所说,getPropertyUniqueness实际上不是我应该使用的。