Hibernate: установите для свойства значение stati c final object instance - PullRequest
0 голосов
/ 10 февраля 2020

Я хотел бы создать в моем приложении stati c final, которые я могу использовать для управления logi c. Примером этого может быть:

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 в перечисление, есть ли способ сохранить ChargeResult с помощью ChargeStatusType?

1 Ответ

0 голосов
/ 10 февраля 2020

Вместо того, чтобы объявлять chargeStatusType типом ChargeStatusType, вы можете объявить его как String и сохранить String, а затем получить значение, используя карту состояния c, например

@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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...