嗨,我想分配默认值列变量,如果值从选择查询该变量是未来为空。
@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"
}]
型
3条答案
按热度按时间5cg8jx4n1#
您可以更改属性的getter方法。
字符串
另外,如果你想在数据库中保存默认值。可以在属性中设置默认值。
型
ppcbkaq52#
您需要设置nativeQuery = true,并使用一些SQL方法在select query中使用每个列,如果该列具有null值,则返回预期值。就像在H2中你可以使用IFNULL(column,expectedvalue),在oracle中你可以使用nvl(column,expectedValue)。
示例:
String query =“从CDP_ALERTS中选择alertReportedTime,uniqueTrxId,IFNULL(status,'defaultvalue')作为状态”;
@Query(value = query,nativeQuery = true)
List
<Country>
findCountryByDate();3okqufwl3#
如果要向现有表中添加新列,则可以使用JPA注解来设置默认值。这是非常有用的,特别是如果列上有@Id注解。这将在表的每一行上设置默认值“SectionInput”而不是null。这是非常有效和超级快。
字符串
在我的例子中,这个新列被添加到现有的复合键中,这就是为什么我在它上面有@Id注解。