【问题标题】:Set default value in Spring Data Cassandra在 Spring Data Cassandra 中设置默认值
【发布时间】:2018-04-13 20:22:36
【问题描述】:

基本上我想知道,如果有空值,如何将默认值设置为 Pojo 变量?

我在我的项目中使用 Spring-data-Cassandra。布尔列中的某些条目具有 null,当我从数据库中获取记录时,它会抛出错误:

布尔值不能为空

即使我在int / long / double ... 列也面临同样的问题。

所以我想在数据库的列为空时给这些字段一个默认值。

这是我希望的最后一个例子:

@Column(default = "UNKNOWN")
private String name;

@Column(default = -1)
private int age;

// or

private String name = "UNKNOWN";
private int age = -1;

我了解了Converter / Mapping / TypeDecode ...但我什么都没有。

请帮帮我。

【问题讨论】:

  • 您可以在实体类级别设置默认值,例如private String name = "DEFAULT"

标签: java spring spring-data spring-data-cassandra


【解决方案1】:

使用@AccessType annotation 确保Spring Data 通过setter 和getter 访问属性。然后,您可以将您的转换从 null 值转换为设置器中的默认值。当然,setter 需要接受盒装类型。不确定,这是否意味着字段也必须是装箱类型。

【讨论】:

    【解决方案2】:

    我认为你在建筑方面有一些错误。如果您不能在 POJO 中接受 null,那么 null 值是如何到达 DB 的?可能您必须接受来自 DB 的空值?

    无论如何,您都可以通过在这些方法中设置默认值来创建设置器并制作空检查器。

    【讨论】:

    • Cassandra 不允许分配默认值,我们已将列添加到现有表中,并在该列中 Cassandra 分配空值。
    • 但我说的是 POJO 类。为什么不能在其中创建设置器并在那里设置默认值?
    • 我想知道如何在 POJO 类中设置默认值,因为我不知道该怎么做,如果你能帮助处理小的 POJO 示例,那就太好了。
    • 空值记录不是通过POJO写入的,而是在Cassandra表中添加列时添加的。
    • 类似这样的东西: public void setSomeBoolean(Boolean b){ if(b == null){ this.someBoolean = false; } 其他 { this.someBoolean = b; } }
    猜你喜欢
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-02
    • 1970-01-01
    • 2014-09-23
    • 2017-05-27
    相关资源
    最近更新 更多