我有一个包含多个实体的数据库,特别是Book
和User
。在它们之间存在ManyToMany
这样的关系:
图书:
@Entity
@Table(name = "Books")
public class Book implements Serializable
{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
@Column(name = "bookId", nullable = false, unique = true)
private Long id;
@Column(name = "title", nullable = false)
private String title;
@Column(name = "price", nullable = false)
private int price;
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "User_Book",
joinColumns = @JoinColumn(name = "bookId"),
inverseJoinColumns = @JoinColumn(name = "userId"))
private Set<UserAccount> users;
用户:
@Entity
@Table(name = "UserAccounts")
public class UserAccount implements Serializable
{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
@Column(name = "userId", nullable = false, unique = true)
private Long id;
@Column(name = "username", nullable = false, unique = true)
private String username;
@Column(name = "password", nullable = false)
private String password;
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "User_Book",
joinColumns = @JoinColumn(name = "userId"),
inverseJoinColumns = @JoinColumn(name = "bookId"))
Set<Book> purchasedBooks;
一切正常,表User_Book
确实是在数据库中创建的。问题似乎与此表的访问有关。
例如,
Query query = entityManager.createQuery("SELECT u FROM User_Book u");
一直告诉我以下内容:
The abstract schema type 'User_Book' is unknown
那么,我应该从头开始创建User_Book
实体吗?它会像现在一样自动填充,也就是说,每当用户购买一本书时,这次购买是否会记录在表格中?