2017-03-17 107 views
0

我有一個服務器類,我想保存服務器對象的數據庫。我創建了一個像下面這樣的實體,但是問題是沒有必要的字段。如何使用JPA將多個​​枚舉值保存到數據庫?

例如,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 
} 
+0

'@ Enumerated' annotation – Laazo

+1

Solaris不是Linux的變種。 – Jesper

+0

對我來說也很明顯。 :d – jklee

回答

2

只有枚舉不是一個好的設計。這將是一個替代設計,但我不知道確切的要求。

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