Я не могу понять, почему JPA не может создать таблицу соответствия - PullRequest
0 голосов
/ 25 сентября 2018

Понятия не имею, почему этот класс не работает с JPA.Должно быть что-то относительно аннотаций, которые я выбрал.Я пытаюсь создать футбольный матч, который происходит на свидании, в определенной области, с пользователями с разными ролями.

@Entity
public class Match {
    @Id
    @GeneratedValue
    private Integer id;

    @OneToMany
    @Column(name = "user")
    private List<User> players;

    @OneToMany
    @Column(name = "user")
    private List<User> administrators;

    @OneToOne
    private User owner;

    @OneToOne
    private Field field;

    private Calendar calendar;

    public Match(User owner) {
        this.owner = owner;
        this.administrators = new ArrayList<>(Arrays.asList(owner));
        this.players = new ArrayList<>(Arrays.asList(owner));
    }

   // getter and setters
}

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Класс сущности .....

@Entity
public class Match {

private Integer id;
private List<User> players;
private List<User> administrators;
private User owner;
private Field field;
private Calendar calendar;

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public Integer getId() {
    return id;
}

public void setId(Integer id) {
    this.id = id;
}

@OneToMany(mappedBy = "<variable name in user Class>", targetEntity = User.class)
public List<User> getPlayers() {
    return players;
}

public void setPlayers(List<User> players) {
    this.players = players;
}

@OneToMany(mappedBy = "<variable name in user Class>", targetEntity = User.class)
public List<User> getAdministrators() {
    return administrators;
}

public void setAdministrators(List<User> administrators) {
    this.administrators = administrators;
}

@OneToOne
@JoinColumn(name = "userId")
public User getOwner() {
    return owner;
}

public void setOwner(User owner) {
    this.owner = owner;
}

@OneToOne
@JoinColumn(name = "fieldId")
public Field getField() {
    return field;
}

public void setField(Field field) {
    this.field = field;
}

@Column(name ="calender")
public Calendar getCalendar() {
    return calendar;
}

public void setCalendar(Calendar calendar) {
    this.calendar = calendar;
}

}

0 голосов
/ 25 сентября 2018

Сначала удалите аннотации @Column, которые бесполезны для @ OneToMany.

Тогда у вас нет конструктора по умолчанию.Это требуется JPA для конструирования объектов.

Таким образом, ваш класс должен выглядеть следующим образом:

@Entity
public class Match {
    @Id
    @GeneratedValue
    private Integer id;

    @OneToMany
    private List<User> players;

    @OneToMany
    private List<User> administrators;

    @OneToOne
    private User owner;

    @OneToOne
    private Field field;

    private Calendar calendar;

    public Match() {
    }

    public Match(User owner) {
        this.owner = owner;
        this.administrators = new ArrayList<>(Arrays.asList(owner));
        this.players = new ArrayList<>(Arrays.asList(owner));
    }

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