有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java从hbm到JPA注释(子类)

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

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

正方形。爪哇

@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)

共 (2) 个答案

  1. # 1 楼答案

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

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

    对不起

  2. # 2 楼答案

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

    @DiscriminatorOptions(force=true)
    

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

    Java API for DiscriminatorOptions