JPA外键不正确

Ale*_*kov 6 spring hibernate jpa

我在MySQL中有两个简单的表

User ---(one-to-many)--- Expense
Run Code Online (Sandbox Code Playgroud)

我正在使用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"
}
Run Code Online (Sandbox Code Playgroud)

调用API时,我已经具有user_id值,并且我不想传递整个对象。

有没有办法告诉Spring这是引用“用户”表中“ id”列的INTEGER FOREIGN KEY?

我在网上找到的所有示例仅显示了如何通过在JSON中传递整个“ User”对象来实现。

我当前的实现:

@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;
}
Run Code Online (Sandbox Code Playgroud)

JLa*_*ar0 0

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

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

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