代码之家  ›  专栏  ›  技术社区  ›  Jack Edmonds

在Hibernate集合和我自己的集合之间转换

  •  1
  • Jack Edmonds  · 技术社区  · 14 年前

    我已经设置了Hibernate来给我一个 Set<Integer> 我在内部转换成 Set<MyObjectType> MyObjectType 可以用单个整数表示)。也就是说,当Hibernate调用我的 void setMyObjectTypeCollection(Set<Integer> theSet) theSet 把它们变成 Set<MyObjectType> getMyObjectTypeCollection() 我分配一个新的HashSet并转换 肌对象类型 s到 Integer s。

    问题是每次我打电话 commit ,Hibernate删除集合中的所有内容,然后重新插入它,而不管集合中的任何元素是否已更改,甚至集合本身是否已更改。

    有没有办法让Hibernate认识到,即使我已经分配并返回了一个不同的集合实例,但集合实际上包含了它以前使用的所有项,并且不需要删除并重新插入它们?

    1 回复  |  直到 14 年前
        1
  •  1
  •   Guillaume    14 年前

    我认为实现你的目标最好的方法是使用 UserType . 基本上,它允许您处理从SQL到您自己的对象(来回)的转换。

    你可以看到一个如何使用它的例子 here .