我的课程 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)
会出现什么问题?
答案 0 :(得分:3)
没关系。我解决了这个问题。缺少 persistence.xml 文件中D类的条目。现在,它的工作正常。
答案 1 :(得分:0)
在我的情况下,我在数据库中添加了一些硬编码值,我写了#34; Guest"用于插入查询中的鉴别器值。
我的错误在于我注释了Guest class,以及#34; guest" (小' g')作为鉴别器值,并将客人添加到数据库中,其中包含#34; Guest"鉴别者价值。
与一些可能的解决方案建立良好关系:here
我真的希望这对某人有所帮助。