-1

我正在将代码更新为 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)
4

2 回答 2

1

我有一个类似的问题,通过添加这个注释来解决:

@DiscriminatorOptions(force=true)

到继承结构的根(在您的情况下为 Square)。我不知道是否有纯 JPA 方法来实现这一点。

用于鉴别器选项的 Java API

于 2013-11-06T12:44:16.710 回答
0

发生了愚蠢的事情......我想念将这个子类添加到休眠配置中

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

对不起

于 2013-11-06T14:16:46.330 回答