如何使用 rest api 在休眠状态下插入表中,并且在该表 2 列上是另一个表的外键?

Posted

技术标签:

【中文标题】如何使用 rest api 在休眠状态下插入表中,并且在该表 2 列上是另一个表的外键?【英文标题】:How to insert into a table in hibernate using rest api and on that table 2 column are foreign key of another table? 【发布时间】:2020-05-27 15:22:09 【问题描述】:

我有 3 个 POJO 类 EmpDepDesig 三个表。我想插入Emp表列e_codee_namedep_idDep表的外键),desig_idDesig表的外键),salary在休眠中使用REST API

我的Emprepositary 班级是

public class EmpRepositary 

    public void addEmployee(Emp e1) 
        Session session = SessionUtill.getSession();        
        Transaction tx = session.beginTransaction();
        addEmployee1(session,e1);       
        tx.commit();
        session.close();

    

    public void addEmployee1(Session session, Emp e1) 
        Emp emp= new Emp();
        emp.setE_code(e1.getE_code());
        emp.setE_name(e1.getE_name());
        emp.setSalary(e1.getSalary());
        emp.setDep(e1.getDep());
        emp.setDesig(e1.getDesig());
        session.save(emp);
    

这是我的Emp POJO 课程

@Entity
public class Emp 
    @Id
    private int e_code;
    private String e_name;
    private int salary;
    @ManyToOne
    private Dep dep;
    @ManyToOne
    private Desig desig;
    getter setter
    ...

当我将数据放入 REST API 时,代码运行完美,但数据仅进入数据库 e_codee_namesalarydept_iddesig_idnull,没有值进入数据库。 ..

所以我的问题是:如何将dept_iddesig_id 的数据放入Emp 表中?

【问题讨论】:

【参考方案1】:

像这样更新您的实体,希望它有效:

        @Entity
        public class Emp 

            @Id
            private int e_code;
            private String e_name;
            private int salary;

            @ManyToOne(fetch = FetchType.EAGER, optional = false)
            @JoinColumn(name = "dep_id ", nullable = false)
            private Dep dep;

            @ManyToOne(fetch = FetchType.EAGER, optional = false)
            @JoinColumn(name = "desig_id ", nullable = false)
            private Desig desig;
            getter setter
            ...
        

【讨论】:

@ManyToOne 有一个默认的获取类型 - Eager

以上是关于如何使用 rest api 在休眠状态下插入表中,并且在该表 2 列上是另一个表的外键?的主要内容,如果未能解决你的问题,请参考以下文章

获取 REST API 数据并使用 C# 将它们保存到 SQL 表中

在没有选择语句的情况下强制休眠插入

如何使用注释创建休眠复合键

angularjs,rest api,spring security,休眠任何应用程序

Feign REST Client:如何获取 HTTP 状态?

Android4.4之后休眠状态下Alarm不准时的问题