簡體   English   中英

持久化嵌套實體Spring Rest數據

[英]Persist Nested Entity Spring Rest Data

我有一個用戶類別

@Entity(name = "users")
@Table(name = "users")
public class User implements UserDetails {

static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "user_id", nullable = false)
private Long id;

@Column(name = "username", nullable = false, unique = true)
private String username;

@Column(name = "password", nullable = false)
private String password;
}

綁定到一個簡單的存儲庫

public interface UserRepository extends PagingAndSortingRepository<User, Long> {
}

我有一個具有嵌套User對象的Instructor類

@Entity
@Table(name = "instructors")
public class Instructor {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "instructor_id", nullable = false, updatable = false)
private Long id;

@OneToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "user_id")
private User user;

@OneToMany(fetch = FetchType.EAGER)
@JoinColumn(name = "course_id")
private List<Course> courses;

}

它與以下存儲庫一起保存

public interface InstructorRepository extends PagingAndSortingRepository<Instructor, Long> {

}

我發布的JSON

{
"user": {
    "id": 1
}
}

當我嘗試對/instructors執行POST 用戶輸入空值。 我缺少JPA將兩者聯系在一起的東西嗎? 我嘗試將CascadeType.ALL添加到該字段上,但這只會引發一個分離的持久異常。

像您已經嘗試過的那樣,將CascadeType.ALL留給Instructor

@ManyToOne(fetch = FetchType.EAGER, cascade=CascadeType.ALL)
@JoinColumn(name = "user_id")
private User user;

另外,將以下內容添加到User 好像和我一起工作。 它提供映射信息並使JPA對待User管理

@OneToMany(mappedBy="user")//, cascade=CascadeType.ALL)
private List<Instructor> instructors = new ArrayList<>();

我已經在上面注釋掉了cascadeType ,但是如果您想讓User與其所有Instructors保持cascadeType ,它可能會很有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM