代码之家  ›  专栏  ›  技术社区  ›  Harvey

将一个表的组件映射为另一个表中的ArrayList作为OneTomany

  •  0
  • Harvey  · 技术社区  · 7 年前

    我正在将JPA与Hibernate Persistence Manager结合使用。

    我有两个班, 库LoanSystem.java 用户.java .

    库LoanSystem.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
    

    用户.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
    

    基本上, ArrayList用户 在库中,LoanSystem是系统中所有用户的列表,也就是说。用户表行中的所有用户记录。这两个Java类具有它们之间的聚合关系,OntoMoNe,具有多个用户但用户只有一个系统的LabyLoad系统。我不确定如何绘制地图,我得到

    非法尝试将非集合映射为@OneTomany,@ManyToMany 或@collectionfelements:controller.libraryLoanSystem.users

    在我的尝试中。如何正确映射这个数组列表?谢谢

    1 回复  |  直到 7 年前
        1
  •  0
  •   Piotr Podraza    7 年前

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

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

    如文件所述( link ):

    Hibernate要求将持久集合值字段声明为接口类型。实际的接口可能是java.util.set、java.util.collection、java.util.list、java.util.map、java.util.sortedset、java.util.sortedmap或任何您喜欢的接口(“任何您喜欢的”表示您必须编写org.hibernate.usertype.usercollectiontype的实现)。

    推荐文章