Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 单表策略没有';不工作的冬眠_Java_Hibernate - Fatal编程技术网

Java 单表策略没有';不工作的冬眠

Java 单表策略没有';不工作的冬眠,java,hibernate,Java,Hibernate,我试图使用Hibernate将类层次结构映射到单个表,而不创建一个表。我添加了@inheritation(strategy=InheritanceType.SINGLE_TABLE),但在base中有单独的表 @MappedSuperclass @Inheritance(strategy=InheritanceType.SINGLE_TABLE) public abstract class User implements UserDetails { @Id @GeneratedValue

我试图使用Hibernate将类层次结构映射到单个表,而不创建一个表。我添加了@inheritation(strategy=InheritanceType.SINGLE_TABLE),但在base中有单独的表

@MappedSuperclass
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
public abstract class User implements UserDetails {
    @Id @GeneratedValue
    private int id;
    ...

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
    ...
}




@Entity
public class Manager extends User{

    ...

}

@Entity
public class Administrator extends User{

    ...

}

怎么了?

您的用户类应该是

@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(field = "type", discriminatorType = DiscriminatorType.STRING)
public class User implements UserDetails {
  /* your original stuff */
}
然后,您需要映射扩展类,如下所示:

@Entity
@DiscriminatorValue("manager")
public class Manager extends User { /* stuff */ }

@Entity
@DiscriminatorValue("administrator")
public class Administrator extends User { /* stuff */ }
这将有效地创建一个表,其中包含来自
User
Manager
Administrator
的所有字段,使用Hibernate添加的名为
type
的特殊字段,该字段将保存
Manager
Administrator
的值