如何避免 spring data JPA 插入特定字段:@Column(name="cn", insertable = false, updatetable=false) 不起作用

问题描述 投票:0回答:1

我有一个实体,其字段名为 cn,意思是创建者姓名。创作者名称来自另一张表。

该实体中的字段是creator_id。阅读文档后,我希望能够使用同一实体处理所有事务 GET、POST、PUT、DELETE 和 find_by_id,定义这些名称字段,例如: @Column(name="cn", insertable = false, updatetable=false ) 私有字符串 cn;

但是在执行 POST 时我得到了下一个 SQL

错误2023-06-23 12:12:44.028警告46523 --- [nio-9087-exec-8] o.h.engine.jdbc.spi.SqlExceptionHelper:SQL错误:1054,SQLState:42S22 2023-06-23 12: 12:44.028 错误 46523 --- [nio-9087-exec-8] o.h.engine.jdbc.spi.SqlExceptionHelper : “字段列表”中存在未知列“vehicles0_.cn” 2023-06-23 12:12 :44.035 INFO 46523 --- [nio-9087-exec-8] o.h.e.internal.DefaultLoadEventListener:HHH000327:执行加载命令时出错

那么 insertable = false、updatable=false 是做什么的?以及如何实现所有事务 GET、POST、PUT、DELETE 和 find_by_id,而不必创建一个没有所有这些名称(派生字段)的单独实体。

我需要这个,因为我有 84 个表,并且我不想复制所有这些实体。

我真的很感谢任何评论,我已经花费了10多个小时,关于可插入和可更新的文档正是我想要的,但它不起作用。

我添加了 @Column(name="cn", insertable = false, updatable=false) 并且我期望 DATA JPA 在进行 post 或 put 时不会将 cn 字段发送到数据库,但根据错误它正在发送它

spring-boot spring-data-jpa data-annotations
1个回答
0
投票

如果在实体上添加 @Transient,它将允许 JPA 不将其保留在数据库中,因此一旦会话已刷新到数据库,它将不会查找该列。

© www.soinside.com 2019 - 2024. All rights reserved.