【问题标题】:Hibernate char discriminator valueHibernate char 鉴别器值
【发布时间】:2011-05-28 10:06:52
【问题描述】:

为什么hibernate认为char判别器不安全?

Using default @DiscriminatorValue for a discriminator of type CHAR is not safe

【问题讨论】:

    标签: hibernate jpa hibernate-mapping hibernate-annotations


    【解决方案1】:

    可能是因为 CHAR 类型包括在每个值后附加空格,直到结果文本具有列的长度。这会导致 varchars 不会出现的各种讨厌的错误。

    【讨论】:

      【解决方案2】:

      您的继承树中是否存在抽象祖先?

      当您将抽象基类标记为@Entity 时,Hibernate 似乎认为抽象类应该具有鉴别器值,即使该类型永远不会存在数据库行。 There is a Hibernate bug for this issue.

      一种解决方法可能是使用@MappedSuperclass。缺点:您将无法基于抽象类型进行查询,因为它不再是 @Entity。

      您可能希望重新评估继承是否真的适合您的实体模型。见this question

      【讨论】:

        【解决方案3】:

        我认为这是因为CHAR 的默认鉴别器值只是空格,这可能会导致各种误解。

        当我有一个未使用 @DiscriminatorValue 注释的具体基类时遇到此错误消息。添加注释后错误解决。

        确保映射类型层次结构中的每个具体类都有一个@DiscriminatorValue,包括基类,并且此错误可能会消失。

        【讨论】:

          猜你喜欢
          • 2011-12-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-06-16
          相关资源
          最近更新 更多