JPA外键未按对象

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

我在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时,我已经具有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;
}
spring hibernate jpa
1个回答
0
投票

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

为要执行的功能创建具有必要ID的POJOS,并在服务层中映射Java实体。

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

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