簡體   English   中英

Hibernate:將屬性字段設置為靜態最終對象實例

[英]Hibernate: Set property field to static final object instance

我想在我的應用程序中創建靜態最終實例,我可以用它來驅動邏輯。 這方面的一個例子是:

public class ChargeStatusType {

private String code;
private String value;
private ChargeStatusType(String code, String value){
    this.code = code;
    this.value = value;
}

public static final ChargeStatusType APPROVED = new ChargeStatusType("APPROVED", "Approved");
public static final ChargeStatusType COMPELTED = new ChargeStatusType("COMPLETED", "Completed");
public static final ChargeStatusType CANCELLED = new ChargeStatusType("CANCELLED", "Cancelled");
public static final ChargeStatusType FAILED = new ChargeStatusType("FAILED", "Failed");

}

然后用於

@Entity
@Table(name="charge_result")
public class ChargeResult extends RepresentationModel<ChargeResult> {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    Long id;

    private ChargeStatusType chargeStatusType;

我在保存 ChargeResult 時遇到問題,因為 Spring/Hibernate 不知道如何處理 ChargeResult.ChargeStatusType。

除了將 ChargeStatusType 轉換為枚舉之外,還有沒有辦法用 ChargeStatusType 來持久化 ChargeResult?

您可以將ChargeStatusType聲明為String並保留該String然后使用靜態映射獲取值,而不是將chargeStatusType聲明為chargeStatusType的類型

@Entity
@Table(name="charge_result")
public class ChargeResult extends RepresentationModel<ChargeResult> {
    private static final Map<String, String> chargeStatusType;
static{
    chargeStatusType = new HashMap<>();
    chargeStatusType.put("APPROVED", "Approved");
    chargeStatusType.put("COMPLETED", "Completed");
    chargeStatusType.put("CANCELLED", "Cancelled");
    chargeStatusType.put("FAILED", "Failed");
}

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
Long id;

@Column
private String chargeStatusKey;

public String getChargeStatusKey(){
    return chargeStatusType.get(chargeStatusKey);
}

暫無
暫無

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

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