Java 从hbm到JPA注释(子类)

Java 从hbm到JPA注释(子类),java,hibernate,hibernate-mapping,hibernate-annotations,Java,Hibernate,Hibernate Mapping,Hibernate Annotations,我正在将代码更新为JPA,使用鉴别器时出现错误 @Entity @DiscriminatorValue("3") public class WidgetContainer extends Square { ... } Square.java @Entity @Table(name = "square") @DiscriminatorColumn(name = "squareType", discriminatorType = DiscriminatorType.INTEGER) @Dis

我正在将代码更新为JPA,使用鉴别器时出现错误

@Entity
@DiscriminatorValue("3")
public class WidgetContainer extends Square {
   ...
}
Square.java

@Entity
@Table(name = "square")
@DiscriminatorColumn(name = "squareType", discriminatorType = DiscriminatorType.INTEGER)
@DiscriminatorValue("0")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public class Square implements Indexable, Serializable{
   ...
}
我得到这个错误

org.hibernate.WrongClassException: Object with id: 1 was not of the specified subclass: sym.domain.Square (Discriminator: 3)

我遇到了一个类似的问题,通过添加此注释解决了这个问题:

@DiscriminatorOptions(force=true)
到继承结构的根(在您的例子中为正方形)。我不知道是否有一个纯粹的JPA的方式来实现这一点


愚蠢的事情总会发生。。。我不想将这个子类添加到hibernate配置中

<bean id="sessionFactory"
        name="sessionFactoriBla"
        class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
        <property name="annotatedClasses">
            <list>
                                .......
                <value>com.domain.WidgetContainer</value>
                                ......
            </list>
        </property>
...

.......
com.domain.WidgetContainer
......
...

抱歉

什么时候会出现此错误?当在查询中获取鉴别器3时,可以显示该查询的代码吗?这是一种配置Hibernate如何实现鉴别器的方法,但我同意您的看法,它似乎不太正确,因为对象已正确注释。这似乎与JPA无关,自从你说你要去JPA了