Взаимодействие с пользователем в заказе - PullRequest
0 голосов
/ 04 августа 2020

У меня возникла проблема с установкой отношения «один ко многим», у меня есть пользователь класса, у пользователя есть роли, и я делаю класс заказа, поэтому у порядка есть два пользователя (работодатель и клиент), и у меня возникла ошибка на карте. свойство целевой сущности: br.com.meusite.models.Order.user в br.com.meusite.models.User.orders.

У меня есть следующее - это User класс:

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

private String username;

@JsonIgnore
@NotEmpty
private String password;

@Email
private String email;

private BigDecimal balance;

@JsonIgnore
@OneToMany(mappedBy = "user")
private List<Order> orders = new ArrayList<>();

@ElementCollection
@CollectionTable(name="TELEFONE")
private Set<String> telefones = new HashSet<>();

@ElementCollection(fetch=FetchType.EAGER)
@CollectionTable(name="ROLES")
private Set<Integer> roles = new HashSet<>();

тогда это класс Order:

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@ManyToOne
@JoinColumn(name = "user_id")
private User customer;

@ManyToOne
@JoinColumn(name = "user_id")
private User employer;

private Payment payment;

@OneToMany(mappedBy = "id.order")
private Set<ItemOrder> items = new HashSet<>();

@JsonFormat(pattern="dd/MM/yyyy HH:mm")
private LocalDateTime date;

Ответы [ 2 ]

0 голосов
/ 04 августа 2020

Вы пытаетесь указать спящему режиму создать связь от пользователя к порядку, ссылаясь на поле user в сущности заказа. Вы должны использовать внешний ключ в пользовательской таблице. Вы должны изменить

    @OneToMany(name = "user")

на

    @OneToMany
    @JoinColumn(name = "whatever_the_foreign_key_is.")

Для дальнейшей помощи покажите снимок экрана с заказом и таблицей пользователей.

0 голосов
/ 04 августа 2020

В вашем файле User атрибут mappedBy ссылается на user, а свойство Order файла - employer, это ошибка. Поэтому либо измените свое сопоставление на:

// on User
    @JsonIgnore
    @OneToMany(mappedBy = "employer")
    private List<Order> orders = new ArrayList<>();

или

// on Order
   @JoinColumn(name = "user_id")
   private User user;

Примечание: , а также проверьте наличие повторяющихся переменных

   @ManyToOne
   @JoinColumn(name = "user_id")
   private User customer;
   
   @ManyToOne
   @JoinColumn(name = "user_id")
   private User employer;
...