【发布时间】:2018-11-06 07:16:03
【问题描述】:
我正在将 JPA 与休眠持久性管理器一起使用。
我有两个类,LibraryLoanSystem.java 和 User.java。
LibraryLoanSystem.java
@Entity
public class LibraryLoanSystem {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer idOfLLS;
@Transient
private ArrayList<Loan> loans = new ArrayList<Loan>();
@Transient
private ArrayList<Loanable> loanables = new ArrayList<Loanable>();
@OneToMany
@JoinTable(name = "USER" , joinColumns = @JoinColumn(name = "studentId"))
private ArrayList<User> users = new ArrayList<User>();
@Transient
private ObservableList<Material> materialData = FXCollections.observableArrayList();
public LibraryLoanSystem() {
populateUsers();
populateMaterials();
} //getters,setters and methods
User.java
@Entity
@Table(name = "User")
public class User {
/* Name of the User */
@Column(name = "name", nullable = false)
private String name;
/* Date of Birth for the User */
@Column(name = "dateOfBirth",nullable = false)
private LocalDate dateOfBirth;
/* Student ID of the User */
@Id
@Column(name = "studentId", updatable = false, nullable = false)
private String studentId;
//constructor,getters & setters
基本上,libraryloansystem 中的 ArrayList users 是系统中所有用户的列表,也就是。用户表行中的所有用户记录。这两个java类之间存在聚合关系,onetomany,libraryloansystem有多个用户,但用户只有一个系统。我不确定如何映射它们,我得到了
非法尝试将非集合映射为@OneToMany、@ManyToMany 或@CollectionOfElements:controller.LibraryLoanSystem.users
根据我的尝试。如何正确映射此数组列表?谢谢
【问题讨论】:
-
(1) 为什么要为实体表 (
@Table(name = "User"...) 和连接表 (@JoinTable(name = "USER"...) 赋予相同的名称? (2) 不要试图强制一个特定的列表实现。请改用private List<User> users = new ArrayList<User>()。
标签: java hibernate jpa hibernate-mapping