【发布时间】:2019-09-06 01:11:23
【问题描述】:
我在 Spring Data Jpa 中使用 OneToMany 关系并使用 postMan 测试 api
@Entity
@Table(name = "book_category")
public class BookCategory {
ParentEntity
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "bookCat_id")
private Long id;
private String name;
@OneToMany(cascade = CascadeType.ALL, mappedBy="bookCategory")
private Set<Book> books;
public BookCategory(String name, Set<Book> books) {
this.name = name;
this.books = books;
}
// getter and setter
}
ChildEntity
@Entity
@Table(name = "book")
public class Book {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "book_id")
private Long bookId;
private String name;
@ManyToOne(cascade = CascadeType.PERSIST)
@JoinColumn(name = "bookCat_id")
BookCategory bookCategory;
public Book() {
}
//getter and Setter
}
控制器类
@RestController
@RequestMapping(value = "/bookCategory")
public class BookController {
@Autowired
BookCategoryRepository bookCategoryRepository;
@Autowired
BookRepository bookRepository;
@PostMapping("/addBookCategory")
public BookCategory savePerson(@Valid @RequestBody BookCategory bookCategory){
return bookCategoryRepository.save(bookCategory);
}
}
从邮递员调用 Rest Api 并将 json 传递为
{
"name":"Category 1",
"books":[
{"name" : "Hello Koding 1"},
{"name":"Hello Koding 2"}
]
}
以下查询是由休眠执行的查询也是正确的,而我正在调用休息点的东西 Hibernate:插入 book_category(名称)值(?) Hibernate:插入书(book_cat_id,name)值(?,?)
它没有插入 book_cat_id,在 book_cat_id 中它传递了 null 所以 null 正在存储
存储在数据库中的数据 book_category Parent Table in database
书(子表) book(ChildTable) 我想得到 Child Table Like I want my table like this
【问题讨论】:
-
如果在您的 db book 表中它被声明为 fk,那么只需在您的 book 实体中使用 book category id 而不是 object。
标签: java spring spring-boot spring-data-jpa