gpt4 book ai didi

spring - JPA 外键不是对象

转载 作者:行者123 更新时间:2023-12-03 15:52:05 24 4
gpt4 key购买 nike

我在 MySQL 中有两个简单的表

User ---(one-to-many)--- Expense

我正在使用 Spring JPA 来生成这两个实体。费用有“user_id”外键字段,它引用用户表中的“id”字段。

我在请求中使用 JSON 来填充表
User
{"id":1, "username":"user"}

Expense
{
"id":1,
"user_id":1, <--- this value is not null in MySQL
"expense":"expense"
}

调用 API 时我已经有了 用户 ID 值,我不想传递整个对象。

有没有办法告诉 Spring 这是引用“用户”表中“id”列的整数外键?

我在网上找到的所有示例都只展示了如何通过在 JSON 中传递整个“用户”对象来实现。

我目前的实现:
@Entity
public class User{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", updatable = false, nullable = false)
private int id;

private String username;
}

@Entity
public class Car{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", updatable = false, nullable = false)
private int id;

@ManyToOne
private User user_id;

private String expense;
}

最佳答案

您不应在请求中传输 JPA 实体。

使用您要执行的功能所需的 ID 创建 POJOS,并映射服务层中的 Java 实体。

例如,对于查询,您只需实例化实体并设置 ID,如果您需要更多字段,您可以通过 id 执行 find() 并通过直接访问对象获取其余属性

关于spring - JPA 外键不是对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46145233/

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