-
30-09-2019 - |
题
我有一个摘要类,其中包含质量列表。质量包含字符串名称和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,其中将新质量对象与结果集中的值一起插入。
如果有兴趣,我可以添加一个完整的示例。
不隶属于 StackOverflow