无法将数据模型的字段保存到数据库中,但可以检索它

Posted

技术标签:

【中文标题】无法将数据模型的字段保存到数据库中,但可以检索它【英文标题】:Can not persist data model's field into database, but can retrieve it 【发布时间】:2019-02-01 22:13:48 【问题描述】:

我在尝试将数据模型类持久保存到数据库时遇到问题。我有这样的课:

class DataModelClass
    //some more field etc.

    @Column(name = "number1", nullable = true)
    private Integer number1;

    @Column(name = "number2", nullable = true)
    private Integer number2;

    public DataModelClass()

    (...)

    public Integer getNumber2() 
        return number2;
    

    public void setNumber2( Integer number2 ) 
        this.number2= number2;
    

第二个字段是在第一个字段之后添加的。何时通过以下方式持久化使用此类创建的对象:

em.persist(dataModelClass);

在数据库中创建了一个新行,但仅添加了第一个字段。第二个是空的。当我调试对象dataModelClass 时,每个字段都设置了一些整数值。 当我通过 pgAdmin 添加 number2 的值,然后通过以下方式使用 java 代码检索此行时:

DataModelClass dmc = em.find(DataModelClass.class, 1);

dmc.getNumber2() 不为空/null。

有人知道什么是错的吗?

[编辑] 也许它会有所帮助,在数据模型(DataModelClass)类上我得到了这个注释:

@Entity
@Table(name = "custom_table",
       uniqueConstraints=@UniqueConstraint(name="UK_example_foreign_id", columnNames="example_foreign_id")
)
@SequenceGenerator(name = DataModelClass.SEQ_NAME, sequenceName = DataModelClass.SEQ_NAME, allocationSize = 1)

显然这个字段存在于我的班级中

【问题讨论】:

你能展示更多DataModelClass的代码吗? number2的setter长什么样子? 是的,我确实添加了更多示例代码 启用 sql 查询日志记录。 在 sql 查询日志中我看不到任何有趣的东西 尝试为 number2 设置一个值。 【参考方案1】:

问题是,在持久化之后有另一个查询正在使用空值更新数据库。所以答案是在更新查询中改变这个值。 谢谢大家。

【讨论】:

【参考方案2】:

我会检查我的数据库是否更新为我的实体类。

【讨论】:

尝试更清楚地解释为什么这是问题的答案

以上是关于无法将数据模型的字段保存到数据库中,但可以检索它的主要内容,如果未能解决你的问题,请参考以下文章

如何将通知保存到我的 android 应用程序以及如何检索数据

从文本字段中提取空数据。表已填充,但无法检索对象。 Java/JavaFX

输入字段的值显示在控制台中但不在输入字段中+无法保存到数据库

如何使用“imageWithData”保存和检索UIImages保持正确的图像格式?

核心数据 - 无法获取,没有先插入

如何将csv日期时间字符串保存到Django模型字段中[重复]