[英]Hibernate/JPA: foreign key = null
below is my 2 entities:下面是我的 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;
}
I want to create User->Address One-to-many relationship, but if I made post request to /address:我想创建 User->Address 一对多关系,但是如果我向 /address 发出 post 请求:
{ "street": "ulicanewnew", "house": "5", "flat": "2", "code": "20-001", "city": "warsaw", "user_id": 1 }
{ "street": "ulicanewnew", "house": "5", "flat": "2", "code": "20-001", "city": "warsaw", "user_id": 1 }
user_id is null in my address table:我的地址表中的 user_id 为空:
Why foreign key in address table is always null?为什么地址表中的外键总是为空? Do you see what is wrong here?
你看到这里有什么问题了吗? With direct sql inserts to db - everything works fine
将 sql 直接插入到 db - 一切正常
I changed request to:我将请求更改为:
{ "street": "dyr", "house": "5", "flat": "2", "code": "20-001", "city": "warsaw", "user": { "id": 50 } }
and it works, but question for now: how to use它有效,但现在的问题是:如何使用
"user_id" : 50
“用户 ID”:50
in my request, instead of在我的请求中,而不是
"user": {
"id": 50
}
? ?
Try adding below changes to your address entity.尝试将以下更改添加到您的地址实体。
@JoinColumn(name = "user_id")
@ManyToOne(targetEntity = User.class, fetch = FetchType.LAZY)
private User user;
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;
....
}
Something like that works for me.类似的东西对我有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.