将 table 的组件映射为另一个 table 中的数组列表作为 onetomany

Mapping a table's components as arraylist in another table as onetomany

我将 JPA 与休眠持久性管理器一起使用。

我有两个类、LibraryLoanSystem.javaUser.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 是系统中所有用户的列表,又名。用户 table 行中的所有用户记录。这两个java 类之间是聚合关系,onetomany,libraryloansystem有多个用户,而用户只有一个系统。我不确定如何映射它们,我得到

Illegal attempt to map a non collection as a @OneToMany, @ManyToMany or @CollectionOfElements: controller.LibraryLoanSystem.users

关于我的尝试。如何正确映射此数组列表?谢谢

而不是: private ArrayList<User> users = new ArrayList<User>();

使用:private List<User> users = new ArrayList<>();

如文档所述 (link):

Hibernate requires that persistent collection-valued fields be declared as an interface type. The actual interface might be java.util.Set, java.util.Collection, java.util.List, java.util.Map, java.util.SortedSet, java.util.SortedMap or anything you like ("anything you like" means you will have to write an implementation of org.hibernate.usertype.UserCollectionType.)