2016-04-04 12 views
0

Javaの列挙型にスタティックテーブル(拡張可能ではない)をマップし、このテーブルを別のテーブルにバインドするにはどうすればよいですか? id (PK)leftOperandoperationrightOperandresult列挙型としてのテーブル。出来ますか?

は例えば、私は、次のフィールドを持って一つのテーブル(ユーザの計算結果)を持つシンプルな電卓のWebアプリ(春のWeb MVC +休止状態)を持っています。

は、私は新しい静的テーブルを作成したいと思います(私はのような基本的な算術演算のための意味を​​、MINUSDIVIDEMULTIPLY)2つのフィールドを持つ:id(PK)とoperation、およびJavaで列挙するために、このテーブルをマップします。

したがって、これらの2つのテーブルを(operationフィールドを使用して)バインドできますか? いくつかの疑似コードが大変ありがとうございます。

静的テーブル用の休止状態エンティティを作成する必要はありません。ちょうどenum。

+0

このように、IDと文字列のマッピングを持つJavaの列挙型がありますが、データベースにまったく同じ情報を保持する必要がありますか?重複している。あなたがそれをしたいと思う理由は(私にとっては)意味がありません。誰かが来て、その間にJavaのenumマッピングを更新してしまい、それらが矛盾しているかもしれません。 –

答えて

1

クラスと同様、あなたがそうのような列挙型にプロパティを追加することができます。

MyEnum enumValue = MyEnum.valueOf(map.get("operation")); 
1

私は思う: 'opreration' フィールドを想定し

public enum MyEnum { 
    PLUS(1, "something"), 
    MINUS(2, "something"); 

    private final int id; 
    private final String string; 

    private MyEnum(int id, String string){ 
     this.id = id; 
     this.string = string; 
    } 

    public int getId(){ 
     return id; 
    } 

    public String getString(){ 
     return string; 
    } 

} 

enumのnameに一致し、次が行うことができます操作値の静的テーブルは必要ありません。 operationフィールドタイプをenumに変更し、@Enumeratedを使用してください。

enum Operation { 
    PLUS, MINUS; 
} 

@Entity 
public class Calculation { 

    private String leftOperand; 

    @Enumerated(EnumType.STRING) 
    private Operation operation; 

    private String rightOperand; 

} 
+0

はい、それは簡単です。しかし、列挙型にマップされ、メインテーブルにバインドされた別のテーブルを持つ方法はありますか? – stryker

+1

@stryker私はそれを行う方法があるとは思わない。列挙型の静的テーブルを別に持つことは意味がないようです。 – Evgeny

+0

には2つの理由があります。マップテーブルを列挙してこれらのテーブルを互いにバインドするのは、実際のWebアプリケーションではありません。それは単なるテストのためであり、どのように動作するか知りたいです。ありがとう – stryker

関連する問題