gpt4 book ai didi

java - 为什么 CrudRepository 会忽略 @Column?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:52:26 27 4
gpt4 key购买 nike

我有一个如下所示的对象模型:

public class Agreement {
@Id @Column(name = "AGREEMENT_ID") private String agreementId;

@Column(name = "RATE") private String rate;
@Column(name = "NOTE") private String note;
... // A number of other fields
}

每个字段都有 getter 和 setter,由 IntelliJ 生成,验证这些都是正确的。在我的 GUI 上,用户可以选择更改协议(protocol),然后点击“保存”。现在我的服务器需要在后端进行更新。我正在使用 Spring Repositories,所以我有:

@Repository
public interface AgreementRepository extends CrudRepository<Agreement, String> {}

当用户提交时,我调用 agreementRepository.save(agreement)。但是,我的字段之一 rate 没有在后端更新。

我已经逐步检查了代码并验证了 rate 属性在传递给 save()agreement 对象中设置正确。此外,我已经打印了 SQL 并验证它实际上是在这个级别,问题似乎正在发生,注意到 save() 方法正在调用 SELECTUPDATE 按预期进行,因为我在测试中一遍又一遍地修改相同的条目,但我可以在查询的 UPDATE 部分清楚地看到 rate 字段未设置。

更奇怪的是,所有其他字段都设置正确,无论我是否也设置了 RATE。所有其他更改都很好地传播。此 RATE 字段没有任何异常。我想可能有一个错误的触发器或我之前的开发人员放入的东西,但我可以看到 Spring 生成的 UPDATE SQL 显然没有设置它,并且已经验证不存在这样的触发器.

CrudRepository.save() 会忽略我的字段之一的原因是什么?它没有标记为 @Transient 并且在任何方面都没有异常。如果它不是 CrudRepository,我还应该去哪里查看此字段未正确设置的原因?

最佳答案

这是真正疯狂的部分。看来我的问题已通过重新启动 IntelliJ 得到解决。真的很难理解哪里出了问题。

我首先将数据库中的列重命名为其他名称,但保留所有其他配置不变。我注意到没有抛出异常并试图找出原因,Spring Repository 应该因为配置错误的实体而对我大喊大叫。在发生了更多奇怪的事件之后,我认为最好重新启动 IntelliJ,以防万一。

突然,它正确地拾取了未正确命名的列。我将该列重命名为它应该的样子,一切都按预期工作。真的很奇怪。

关于java - 为什么 CrudRepository 会忽略 @Column?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39774144/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com