Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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 如何使用JPA将多个枚举值保存到数据库?_Java_Jpa_Enums - Fatal编程技术网

Java 如何使用JPA将多个枚举值保存到数据库?

Java 如何使用JPA将多个枚举值保存到数据库?,java,jpa,enums,Java,Jpa,Enums,我有一个服务器类,我想将服务器对象保存到数据库中。我创建了一个如下的实体,但问题是有不必要的字段 例如,Linux操作系统记录也有WindowsOperatingSystemVersion列。如何有效地将多个枚举值保存到数据库 @Entity @Table(name = "server") public class Server{ @Column private OperatingSystem os; @Column private LinuxOperatin

我有一个服务器类,我想将服务器对象保存到数据库中。我创建了一个如下的实体,但问题是有不必要的字段

例如,Linux操作系统记录也有WindowsOperatingSystemVersion列。如何有效地将多个枚举值保存到数据库

@Entity
@Table(name = "server")
public class Server{

    @Column
    private OperatingSystem os;

    @Column
    private LinuxOperatingSystemVersion losv;

    @Column
    private WindowsOperatingSystemVersion wosv;

}

public enum OperatingSystem{
    LINUX,
    WINDOWS
}

public enum LinuxOperatingSystemVersion{
    UBUNTU,
    SOLARIS
}

public enum WindowsOperatingSystemVersion{
    WINDOWS10,
    XP
}

仅枚举不是一个好的设计。这将是一个替代设计,但我不知道确切的要求

@Entity
public class Server {

    @OneToMany
    OperatingSystem operatingSystem;    
}

@Entity
public class OperatingSystem {
    @Enumerated(EnumType.STRING)
    OperatingSystemEnum operatingSystemEnum;

    @Enumerated(EnumType.STRING)
    OperatingSystemVersion operatingSystemVersion;
}

public enum OperatingSystemEnum {
    LINUX,
    WINDOWS
}

public enum OperatingSystemVersion {
    UBUNTU,
    SOLARIS,
    WINDOWS10,
    XP
}

仅枚举不是一个好的设计。这将是一个替代设计,但我不知道确切的要求

@Entity
public class Server {

    @OneToMany
    OperatingSystem operatingSystem;    
}

@Entity
public class OperatingSystem {
    @Enumerated(EnumType.STRING)
    OperatingSystemEnum operatingSystemEnum;

    @Enumerated(EnumType.STRING)
    OperatingSystemVersion operatingSystemVersion;
}

public enum OperatingSystemEnum {
    LINUX,
    WINDOWS
}

public enum OperatingSystemVersion {
    UBUNTU,
    SOLARIS,
    WINDOWS10,
    XP
}

@Enumerated
注释Solaris不是Linux的变体。我也注意到了这一点:D
@Enumerated
注释Solaris不是Linux的变体。我也注意到了这一点:D