Hibernate:更改子类的DiscriminatorValue抛出org.hibernate.WrongClassException

时间:2013-01-03 03:18:05

标签: hibernate jpa

我的课程 A ,其子类为 B C
我正在使用 InheritanceType.SINGLE_TABLE ,并且正在使用一列类型作为DiscriminatorColumn。

早些时候, B DiscriminatorValue(“1”) C DiscriminatorValue(“2”)。 我在表中有大约100多个条目,一切正常。

现在,我又创建了一个 A D 的子类。但我希望它有 DiscriminatorValue(“1”),因此我将 B C 的DiscriminatorValues分别更改为2和4。 /> 我还使用适当的值更新了数据库列类型

但是现在当我运行应用程序时,我遇到了以下异常:

org.hibernate.WrongClassException: Object with id: 9 was not of the 
specified subclass: com.example.D (Discriminator: 1)

会出现什么问题?

2 个答案:

答案 0 :(得分:3)

没关系。我解决了这个问题。缺少 persistence.xml 文件中D类的条目。现在,它的工作正常。

答案 1 :(得分:0)

在我的情况下,我在数据库中添加了一些硬编码值,我写了#34; Guest"用于插入查询中的鉴别器值。

我的错误在于我注释了Guest class,以及#34; guest" (小' g')作为鉴别器值,并将客人添加到数据库中,其中包含#34; Guest"鉴别者价值。

与一些可能的解决方案建立良好关系:here

我真的希望这对某人有所帮助。