是否可以使用具有双向映射且没有外键的JPA来实现DDL?如果可以的话,这是最佳做法吗?
@Entity
class Book{
int id;
String title;
@OneToMany(mappedBy="book")
Set<BookDetail> book_detail;
}
@Entity
class BookDetail{
int id;
String name;
String description;
@ManyToOne
Book book;
}
答案 0 :(得分:0)
如果没有至少一个 foreign 键,您将无法执行此操作,因为数据库需要在两个实体-BookDetail和Book之间建立某种连接。通过在BookDetail中使用纯整数属性(可以存储Book id的值),可以为这些实体创建两个表而没有真正的外键。 但是不要那样做!
使用外键,您的DBMS会生成约束,因此可以了解该关系,并且可以防止某些不安全的删除和插入,因此每个BookDetail的行都引用现有的Books。
如果没有真正的外键,您可能会意外删除一本书,而BookItem的
答案 1 :(得分:0)
是的。可以使用联接表。当然会有外键。
@Entity
class Book{
@OneToMany
List<BookDetail> bookDetail;
}
@Entity
class BookDetail{
@ManyToOne(fetch = FetchType.LAZY)
Book book;
}