2011-12-07 15 views
0

私のような静的クラスをしました:保存JPAでの非永続オブジェクトID(休止状態)

私はエンティティクラスに

@Entity 
@Table(name="person") 

public class Person{ 

    @Id 
    @GeneratedValue(strategy=GenerationType.AUTO) 
    private long id;// setter/getter omitted 

    private Sex sex; 
    public final Sex getSex() { 
    return this.sex; 
    } 
    public final void setSex(final Sex argSex) { 
    this.sex = argSex; 
    } 
} 

をした私はsex_idを保存したい

public class Sex{ 

private final int code; 
private final String status; 

public static final int TOTAL = 3; 

private Sex(int c, String s) { 
code = c; 
status = s; 
} 

public static final Sex UNDEFINED = new Sex(1, "UNDEFINED"); 
public static final Sex MALE = new Sex(2, "MALE"); 
public static final Sex FEMALE = new Sex(3, "FEMALE"); 
private static final Sex[] list = { UNDEFINED, MALE, FEMALE }; 

public int getCode() { 
return code; 
} 

public String getStatus() { 
return status; 
} 

public static Sex fromInt(int c) { 
if (c < 1 || c > TOTAL) 
throw new RuntimeException("Unknown code for fromInt in Sex"); 
return list[c-1]; 
} 

public static List getSexList() { 
return Arrays.asList(list); 
} 
} 

そして、人物表データベース。 JPAでSexに注釈を付ける方法

Person person = new Person(); 
person.setSex(Sex.MALE); 
Dao.savePerson(person); 

- 指定されたとおり、私は私のようなコードを書くたいので、しかし、セッター/ゲッターは、すべきですか?

答えて

4

新しいSexインスタンスをデータベースに作成しないようにするため、ではなくenumSexの代わりに使用してください。

クラスのSex属性に@Enumerated(EnumType.STRING)と注釈を付ける必要があります。完全な例here(またはGoogleだけで十分です)

1

代わりに列挙子のセックスを使用して、代わりに@Enumeratedを使用してみませんか?

@Enumerated(EnumType.STRING) 
    Sex sex