java - Java Spring JPA 插入
问题描述
请帮我在 spring-data-jpa 中执行 Postgres 查询:
@Transactional
public interface JournalAdd extends CrudRepository<Journal, Long> {
@Modifying
@Query(value = "insert into journals (messageid, oldowner) values ('dgf', 'fgd')", nativeQuery = true)
void updateJournalOldownerMessageid(Long id);
}
执行后没有错误,但在表中只添加了一行没有值
ohtype.descriptor.sql.BasicBinder : 绑定参数 [1] 作为 [VARCHAR] - [null] ohtype.descriptor.sql.BasicBinder : 绑定参数 [2] 作为 [VARCHAR] - [null]
Postgres 表日志:
@Entity
@Table(name = "journals")
public class Journal implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "oldowner")
private String oldowner;
@Column(name = "messageid")
private String messageid;
解决方案
如果你正在使用nativequery=true
,那么你必须使用纯 postgres sql in @Query
。您正在使用JPQL
in@Query
但告诉 JPA 执行是作为本机查询。
@Query
如果在此处提供,请使用查询更改您的值。您的查询应如下所示
@Modifying
@Query(value = "INSERT INTO journals (messageid, oldowner) select m.id, m.owner from message m where m.id = ?1",
nativeQuery = true)
void updateJournalOldowner(Long id);
推荐阅读
- excel - MS Project VBA:尝试将复制的任务从 .MPP 粘贴到 Excel
- postgresql - 根据条件从不同的表中选择
- java - 检索 listView 的对象
- ruby-on-rails - 与 UsageCharge 相关的 Shopify-App 年度会员计划问题
- wordpress - 如何使用自定义函数执行计算并使用 PHP 显示结果
- python - 如何创建显示材料属性的 Abaqus RSG gui builder
- excel - 运行“For循环”时跳过空白
- amazon-web-services - 有没有办法找出 EBS 快照被其他人用于创建卷的频率?
- oracle - 甲骨文文本。尝试使用上下文索引更新列
- python - Google 生成的图和 matplotlib 的图不同