Сопоставление компонентов таблицы как arraylist в другой таблице как onetomany - PullRequest
0 голосов
/ 27 мая 2018

Я использую 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

В основном, пользователи ArrayList в libraryloansystem - этосписок всех пользователей в системе, ака.все записи пользователя в строках таблицы пользователя.Эти два java-класса имеют взаимосвязь агрегации между ними, одна из которых с библиотечной системой, в которой есть несколько пользователей, но пользователь имеет только одну систему.Я не уверен, как сопоставить их, и я получаю

Незаконная попытка сопоставить не коллекцию как @OneToMany, @ManyToMany или @CollectionOfElements: controller.LibraryLoanSystem.users

На моих попытках.Как я могу правильно сопоставить этот список? Спасибо

1 Ответ

0 голосов
/ 27 мая 2018

Вместо: private ArrayList<User> users = new ArrayList<User>();

используйте: private List<User> users = new ArrayList<>();

Как указано в документации ( ссылка ):

Hibernateтребует, чтобы постоянные коллекционные поля были объявлены как тип интерфейса.Фактический интерфейс может быть java.util.Set, java.util.Collection, java.util.List, java.util.Map, java.util.SortedSet, java.util.SortedMap или как угодно («все что угодно»).означает, что вам придется написать реализацию org.hibernate.usertype.UserCollectionType.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...