[英]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.