当前位置: 首页 > 知识库问答 >
问题:

Hibernate/JPA:foreign key=null

申屠黎昕
2023-03-14

下面是我的2个实体:

package dev.proj.project.application.model;

import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.util.List;

@Getter
@Setter
@NoArgsConstructor
@Entity
@Table(name = "user")
public class User {

    @Id
    @NotNull
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", updatable = false, nullable = false)
    public int id;

    @NotNull
    @Column(name="firstname")
    private String firstname;

    @NotNull
    @Column(name="lastname")
    private String lastname;

    @NotNull
    @Column(name="email")
    private String email;

    @NotNull
    @Column(name="password")
    private String password;

    @JsonIgnore
    @OneToMany(mappedBy="user", cascade = CascadeType.ALL)
    private List<Address> address;
}
package dev.proj.project.application.model;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonManagedReference;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.util.List;

@Getter
@Setter
@NoArgsConstructor
@Entity
@Table(name = "address")
public class Address {

    @Id
    @NotNull
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", updatable = false, nullable = false)
    private int id;

    @NotNull
    @Column(name="street")
    private String street;

    @NotNull
    @Column(name="house")
    private String house;

    @NotNull
    @Column(name="flat")
    private String flat;

    @NotNull
    @Column(name="code")
    private String code;

    @NotNull
    @Column(name="city")
    private String city;

    @ManyToOne(optional = false)
    @JoinColumn(name = "user_id",nullable = false,updatable = true,insertable = true)
    private User user;

}

我想创建用户-

{“street”:“Ulicanew”,“house”:“5”,“flat”:“2”,“code”:“20-001”,“city”:“warsaw”,“user_id”:1}

我的地址表中的用户id为空:

为什么地址表中的外键总是空的?你知道这是怎么回事吗?通过直接向db插入sql,一切正常

共有3个答案

容飞掣
2023-03-14
import java.util.List;
import java.util.Set;
import javax.persistence.*;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotNull;
import org.hibernate.validator.constraints.Length; 

@Entity
@Table(name = "customer")
public class Customer {
     ...
     @Id
     @GeneratedValue(strategy = GenerationType.AUTO)
     @Column(name = "user_id")
     private int id;

     @OneToMany(mappedBy = "customer", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
     private List<DatabaseTable> databaseTables;
     ...
}
...
...
import org.hibernate.validator.constraints.Length;
import javax.persistence.*;

@Entity
@Table(name = "databasetable")
public class DatabaseTable {
    ...
    @ManyToOne
    @JoinColumn(name = "user_idFK")
    private Customer customer;
    ....
}

这对我很有用。

权兴为
2023-03-14

尝试将以下更改添加到您的地址实体。

@JoinColumn(name = "user_id")
@ManyToOne(targetEntity = User.class, fetch = FetchType.LAZY)
private User user;
孟乐逸
2023-03-14

我将请求更改为:

    {
        "street": "dyr",
        "house": "5",
        "flat": "2",
        "code": "20-001",
        "city": "warsaw",
        "user": {
        	"id": 50
        }
    }
 类似资料:
  • 在本章中,我们将讨论BeanEditForm和Grid component与Hibernate的集成。 Hibernate通过hibernate模块集成到tapestry中。 要启用hibernate模块,请在pom.xml文件中添加tapestry-hibernate依赖项和可选的hsqldb 。 现在,通过放置在资源文件夹根目录的hibernate.cfg.xml文件配置hibernate。

  • Hibernate是一种高性能的对象/关系持久性和查询服务,它在开源GNU宽通用公共许可证(LGPL)下获得许可,可以免费下载。 在这一章当中。 我们将学习如何实现Struts 2与Hibernate的集成。 如果您不熟悉Hibernate,那么您可以查看我们的Hibernate教程 。 数据库设置 在本教程中,我将使用“struts2_tutorial”MySQL数据库。 我使用用户名“root

  • iBATIS和Hibernate之间存在重大差异。 鉴于其特定领域,这两种解决方案都运行良好。 建议使用iBATIS - 您想创建自己的SQL,并且愿意维护它们。 您的环境由关系数据模型驱动。 您必须处理现有的和复杂的模式。 如果环境由对象模型驱动并且需要自动生成SQL,请使用Hibernate。 iBATIS和Hibernate之间的区别 Hibernate和iBATIS都是业界可用的开源对象关

  • Hibernate是一种Java语言下的对象关系映射解决方案。 它是使用GNU宽通用公共许可证发行的自由、开源的软件。它为面向对象的领域模型到传统的关系型数据库的映射,提供了一个使用方便的框架。Hibernate也是目前Java开发中最为流行的数据库持久层框架,现已归JBOSS所有。 它的设计目标是将软件开发人员从大量相同的数据持久层相关编程工作中解放出来。无论是从设计草案还是从一个遗留数据库开始

  • 问题内容: 我正在尝试使用IntelliJ 12.1.3使用JPA测试Hibernate 4.2.1.Final,但出现以下错误。 一切似乎都设置正确(我让IntelliJ生成了映射),由于我对Hibernate和JPA的经验为零,所以我无所适从。 为什么要启用NPE? 主类: 错误: Persistance.xml 问题答案: 该消息向我表明它无法连接到数据库。仔细检查您的连接字符串,并确保您的

  • 问题内容: 在tomcat 7中部署应用程序时,我从此pom.xml运行mvn tomcat7:run时遇到此错误。在我的依赖项中,我想问题可能是由于相依软件包的混合版本引起的。 这是../../pom.xml: 问题答案: 此类是在4.xx版本中添加的,您将不会在Hibernate 3中找到它 可能是您的Maven依赖关系树中有2个版本。 你需要: 跑 检查您有多少个版本以及哪些其他3rd oa