我有一个摘要类,其中包含质量列表。质量包含字符串名称和int值。该数据存储在不合规的DB结构中,仅用于摘要和质量。

质量表:

id,somefileds,QualityName1,QualityValue1,QualityName2,QualityValue2,QualityName3,QualityValue3

对于每个质量名称和价值对,必须在摘要类中插入一个新的质量对象。

如何在Hibernate(XML Hibernate映射)中进行映射?

有帮助吗?

解决方案

尚不清楚如何 Quality 对象必须“插入” Summary 持有人类类,但我认为是自定义用户类型(要么 o.h.u.UserType 或者 o.h.u.UserCollectionType)是去这里的方式。

参考该部分 5.2.3。自定义值类型 在文档中以获取更多详细信息(有关映射没有太多要说的,只需将您的自定义用户类型指定为 type 在映射中)。

其他提示

我设法通过自定义的复合构造实现来修复它。映射文件看起来如下:

<property name="qualities" type="com.foo.bar.QualityCompositeUserType">
        <column name="linkName1" />
        <column name="linkQuality1" />
        <column name="linkName2" />
        <column name="linkQuality2" />
        <column name="linkName3" />
        <column name="linkQuality3" />
</property>

CompositeUsertype中的返回频道是List.Class,NullSafeset方法将集合作为值参数。这只是从列表中获取值并将其分配给准备语句中的参数的问题。 (如果质量列表中缺少值,则填充空)。

NullSafeget方法更容易。我只是创建了一个新的Arraylist,其中将新质量对象与结果集中的值一起插入。

如果有兴趣,我可以添加一个完整的示例。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top