Как присвоить значение по умолчанию переменной столбца, если значение столбца имеет нулевое значение - PullRequest
0 голосов
/ 29 мая 2020

Привет, я хочу присвоить значение по умолчанию для переменной столбца, если значение из запроса выбора для этой переменной приходит как null.

    @Entity
    @Table(name = "CDP_ALERTS")
    public class Country {

       @Column(name = "alert_reported_time")
    private String alertReportedTime;

    @Column(name = "unique_id")
    private String uniqueTrxId;

    @Column(name = "status_data")
    private String status;

public String getAlertReportedTime() {
        return alertReportedTime;
    }

    public void setAlertReportedTime(String alertReportedTime) {
        this.alertReportedTime = alertReportedTime;
    }
public String getUniqueTrxId() {
        return uniqueTrxId;
    }

    public void setUniqueTrxId(String uniqueTrxId) {
        this.uniqueTrxId = uniqueTrxId;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }
    }

Здесь значение столбца status_data когда-то приходит как null. ниже представлен запрос выбора.

@Query( "SELECT a FROM Country a WHERE to_char(alert_reported_time,'DD-MM-YY')=to_char(current_date,'DD-MM-YY') order by alert_reported_time desc")
    List<Country> findCountryByDate();

Ниже приведен результат, в котором в одном объекте я получаю значение как закрытое для статуса, но в одном объекте я получаю значение как null.

{

[
        "alertSubject": "CWDigital Alert in MS onlinepayment with StatusCode 400",
        "alertReportedTime": "2020-05-29 15:16:03",
        "uniqueTrxId": "1018",
        "status": null,
        "reason": null,
        "conversationId": "ecd6184d-b2f1-4545-c5f2-1ac6d1df48fc",
        "clusterName": "patlacw01",
        "statusCode": "400\n",
        "nameSpace": "com-att-cwdigital-shop-prod"
    },
    {
        "alertSubject": "CWPOS Alert-500 in mS OrderManagement from pbhmacw01 and m26845@prod.shop.cwdigital.att.com",
        "alertReportedTime": "2020-05-29 15:15:41",
        "uniqueTrxId": "1017",
        "status": "CLOSED",
        "reason": null,
        "conversationId": "ee66359e-f87d-4eff-ce50-02ff6e18879a",
        "clusterName": "pbhmacw01",
        "statusCode": "500\n",
        "nameSpace": "com-att-cwpos-prod"
    }]

Ответы [ 2 ]

1 голос
/ 29 мая 2020

Вы можете изменить свой метод получения для свойства.

public String getStatus(){
   if(status != null) return status;
   return "Whatever you want";
}

Кроме того, если вы хотите сохранить значение по умолчанию в db. вы можете установить значение по умолчанию в свойстве.

@Column
private String status = "My default value";
0 голосов
/ 29 мая 2020

Вам необходимо установить nativeQuery = true и использовать каждый столбец в запросе выбора с некоторым sql методом, который возвращает ожидаемое значение, если этот столбец имеет нулевое значение. Как и в H2, вы можете использовать IFNULL (столбец, ожидаемое значение), в oracle вы можете использовать nvl (column, exepectedValue).

пример:

String query = "Выберите alertReportedTime, uniqueTrxId, IFNULL (status, 'defaultvalue') как статус из CDP_ALERTS ";

@ Query (value = query, nativeQuery = true)

List <Country> findCountryByDate ();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...