2017-03-17 9 views
0

私はServerクラスを持っており、サーバーオブジェクトをデータベースに保存します。私は以下のようなエンティティを作成しましたが、問題は不要なフィールドがあることです。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

'@列挙型注釈 – Laazo

+1

SolarisはLinuxの変種ではありません。 – Jesper

+0

私にも気付いています。 :D – jklee

答えて

2

enumsは良い設計ではありません。これは代替設計になりますが、正確な要件はわかりません。

@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 
} 
関連する問題