【问题标题】:Hibernate mapping a UserType inside a MapHibernate 在 Map 中映射 UserType
【发布时间】:2012-02-09 05:12:05
【问题描述】:

我遇到了一个问题,我无法使用 Hibernate 持久化 Map<UUID, Integer>。我不确定如何正确注释此集合,以便它可以正确映射到我们的数据库中。我们控制模式,所以任何方式都可以。我是否需要以某种方式指定密钥在我的地图中的用户类型?我需要一个吗?我知道 Type 注释用于单个字段。也许不是收藏?我在致电 session.flush()

时收到以下异常

java.lang.ClassCastException: java.lang.String cannot be cast to java.util.UUID

@ElementCollection
@Type(type="org.hibernate.type.UUIDCharType")
private Map<UUID, Boolean> orderCount = new HashMap<UUID, Integer>();

【问题讨论】:

  • UUIDCharType 是否适用于字符串而不是 UUID?

标签: java hibernate orm map annotations


【解决方案1】:

我相信你必须写一个UserType 来处理Map&lt;UUID, Boolean&gt; .. 然后这个UserType 应该使用org.hibernate.type.UUIDCharType 来映射键列。

【讨论】:

  • 如何使用注解分别为key和value列指定UserType?
  • 我发现了:@MapKeyType(value=@Type(type="org.hibernate.type.UUIDCharType")) 会做到的。这样做无需创建UserType。有谁知道如何为值设置一个? (即使这里不需要布尔值)
  • @Ryan 你能看看我的类似问题吗:stackoverflow.com/questions/32307329/…
猜你喜欢
  • 1970-01-01
  • 2020-04-14
  • 1970-01-01
  • 2011-10-20
  • 2011-05-18
  • 2023-03-26
  • 2015-11-25
  • 2011-08-31
  • 1970-01-01
相关资源
最近更新 更多