返回顶部
首页 > 资讯 > 后端开发 > Python >SpringBoot中JPA更新时部分字段无效
  • 940
分享到

SpringBoot中JPA更新时部分字段无效

JPA更新部分字段无效JPA更新字段 2023-05-15 11:05:18 940人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录相关源码计算属性插入或更新时设置默认值JPA基本数据类型关联类型属性综上最近用JPA写业务代码,发现了一个奇怪的bug,在通过注解自动更新时,部分字段在调试时可以找到,却没有被自

最近用JPA写业务代码,发现了一个奇怪的bug,在通过注解自动更新时,部分字段在调试时可以找到,却没有被自动更新到数据库中。

相关源码

实体类定义

@Table(name = "t_workspace")
@Entity
@DynamicInsert
@DynamicUpdate
@org.hibernate.annotations.Table(appliesTo = "t_workspace", comment = "工作空间表")
public class WorkSpaceEntity extends BaseEntity {


    @Column(columnDefinition = "TEXT COMMENT '模型图结构' ")
    private String mxGraphModel;

    @Convert(converter = ModelDataConver.class)
    @Column(columnDefinition = "mediumtext comment '存储模型数据集'")
    private ModelData modelData;
}

相关业务语句如下,用于更新mxGraphModelmodelData

workSpace.setMxGraphModel(newEntity.getMxGraphModel());
workSpace.setModelData(newEntity.getModelData());

但实际执行的sql语句如下

Hibernate: update t_workspace set wupdated_at=?, wmx_graph_model=? where wid=?

@DynamicUpdate适用属性

如上所示,使用注解@DynamicUpdate自动更新,但是该注解只能自动更新实体属性。而实体属性是指JPA认定的基本数据类型以及关联类型属性。另外,如果实体类中存在一些计算属性或者需要在插入或更新时设置默认值的属性,那么这些属性可能会被忽略,导致出现数据不一致的情况。

计算属性

实体类中的计算属性指的是,这些属性的值是根据其他属性计算得出的,而不是从数据库中直接获取的。例如,订单实体类中的总金额属性,可能是根据订单项的数量和单价计算得出的,而不是从数据库中直接获取的。

插入或更新时设置默认值

需要在插入或更新时设置默认值的属性,指的是这些属性在插入或更新时需要设置默认值,例如创建时间、更新时间、是否删除等属性。

这些属性有以下特点:

  • 与数据库表中的字段不一一对应,可能通过计算或者默认值生成。
  • 在读取或者写入数据库时,需要特殊处理,以保证其值的正确性。
  • 在使用动态 SQL 语句生成注解时,需要特殊处理,以避免生成不必要的 SQL 语句。

JPA基本数据类型

基本类型指的是 Java 中的基本数据类型,包括 byte、short、int、long、float、double、char、boolean 等。在 JPA 中,除了基本数据类型之外,还包括一些 Java 类型,例如 String、java.util.Date、java.sql.Date、java.sql.Time、java.sql.Timestamp 等。

关联类型属性

通过@OneToOne、@OneToMany、@ManyToOne、@ManyToMany注解的属性

综上

ModelData属于自定义类,作为JPA的三等公民,没有被优待的权利。而JPA中对象即表的概念展现得淋漓尽致。

到此这篇关于SpringBoot中JPA更新时部分字段无效的文章就介绍到这了,更多相关JPA更新时部分字段无效内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: SpringBoot中JPA更新时部分字段无效

本文链接: https://lsjlt.com/news/208917.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • SpringBoot中JPA更新时部分字段无效
    目录相关源码计算属性插入或更新时设置默认值JPA基本数据类型关联类型属性综上最近用JPA写业务代码,发现了一个奇怪的bug,在通过注解自动更新时,部分字段在调试时可以找到,却没有被自...
    99+
    2023-05-15
    JPA更新部分字段无效 JPA更新字段
  • SpringBoot中JPA更新时部分字段无效怎么解决
    这篇“SpringBoot中JPA更新时部分字段无效怎么解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“SpringBoo...
    99+
    2023-07-06
  • SpringBoot使用JPA实现查询部分字段
    目录SpringBootJPA查询部分字段自定义简单的查询方法SpringBoot JPA查询部分字段 用过JPA的都知道,只需要继承JpaRepository 根据Jpa的函数命名...
    99+
    2024-04-02
  • springboot jpa之返回表中部分字段如何处理
    这篇文章主要介绍springboot jpa之返回表中部分字段如何处理,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!springboot jpa返回表中部分字段使用springboot jpa操作数据库可以...
    99+
    2023-06-22
  • springboot jpa之返回表中部分字段的处理详解
    目录springboot jpa返回表中部分字段jpa 自定义返回字段springboot jpa返回表中部分字段 使用springboot jpa操作数据库可以加快我们的开发效率,...
    99+
    2024-04-02
  • mysql 更新指定字段部分字符替换
    mysql 更新指定字段部分字符替换 可以使用 MySQL 的 REPLACE 函数来替换字符串中的一部分字符,然后再将更新后的字符串保存回数据库。 REPLACE 函数的语法如下: REPLACE(str, find_string, re...
    99+
    2023-08-16
    mysql 数据库 java
  • springboot中自动建表无法更新字段怎么解决
    本篇内容主要讲解“springboot中自动建表无法更新字段怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“springboot中自动建表无法更新字段怎么解决”吧!关于自动建表,无法更新字...
    99+
    2023-06-29
  • springboot中关于自动建表,无法更新字段的问题
    目录关于自动建表,无法更新字段问题Springboot中的配置除了create配置,还有以下几种springboot jpa未自动建表问题记录检查pom是否正确引入对应模块检查app...
    99+
    2024-04-02
  • Mybatis-Plus实现只更新部分字段的数据
    目录Mybatis-Plus只更新部分字段数据1、通过UpdateWrapper修改指定的列2、使用场景和案例Mybatis-Plus更新字段问题spring-boot设置...
    99+
    2024-04-02
  • 更新 MongoDB 和 Golang 驱动程序中的时间戳字段
    学习Golang要努力,但是不要急!今天的这篇文章《更新 MongoDB 和 Golang 驱动程序中的时间戳字段》将会介绍到等等知识点,如果你想深入学习Golang,可以关注我!我会持续更新相关文...
    99+
    2024-04-04
  • MySQL字段中如何快速设置自动添加时间和更新时间
    下面讲讲关于MySQL字段中如何快速设置自动添加时间和更新时间,文字的奥妙在于贴近主题相关。所以,闲话就不谈了,我们直接看下文吧,相信看完MySQL字段中如何快速设置自动添加时间和更新时间这篇文章你一定会有...
    99+
    2024-04-02
  • SQL Server触发器中表的特定字段更新时如何触发Update触发器
    SQL Server触发器中表的特定字段更新时如何触发Update触发器,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作