簡體   English   中英

使用JPA和Spring時,如何更改java.lang.Enum的序數?

[英]How could I change java.lang.Enum's ordinal when using JPA and Spring?

實體:

@Entity
@Table(name = "table_name")
public class MyClass extends IdEntity {
    private MyEnumType enumType;

    @Enumerated(EnumType.ORDINAL)
public MyEnumType getEnumType() {
    return enumType;
}

public void setEnumType(MyEnumType enumType) {
    this.enumType= enumType;
}
}

枚舉:

public enum MyEnumType {
    DOG(11),CAT(13),BULL(20);
    private int value;
    private MyEnumType (int value) {
    this.value= value;
}
    public int getValue() {
    return value;
}
public void setValue(int value) {
    this.value= value;
}
}

主要代碼:

//any code then ...
entity.setsEnumType(MyEnumType.CAT);
//...persist API 

我想將貓的int值( 13 )保留在數據庫中(例如mysql)。但是在mysql中,enumType為( 1 ),什么是ORDINAL值。我想知道是否有一種方法可以通過JPA和彈簧???

有這樣的方法:

change "private MyEnumType enumType;" to "private **int** enumType;"

然后:

entity.setsEnumType(MyEnumType.CAT.getValue());

但是我不喜歡這樣。

JPA 2.1允許以標准方式定義自定義類型。 使用@Convert批注。 有關說明,請參閱http://www.thoughts-on-java.org/2013/10/jpa-21-how-to-implement-type-converter.html ,這是javadoc不夠的。

如果您仍在使用JPA 2.0,則Hibernate具有定義自定義類型的專有方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM