我在设置一对多关系时遇到问题,我有一个user类,user有角色,我正在制作order类,因此order有两个用户(雇主和客户),并且我在mappedBy引用一个未知的目标实体属性时出错: br.com.meusite.models.User.orders中的br.com.meusite.models.Order.user。
我有以下内容--这是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;发布于 2020-08-04 06:51:28
在您的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;发布于 2020-08-04 06:58:35
您正在尝试告诉hibernate创建一个从用户到订单的关系,引用order实体中的user字段。您应该在user表中使用外键。你必须改变
@OneToMany(name = "user")至
@OneToMany
@JoinColumn(name = "whatever_the_foreign_key_is.")请显示订单和用户表的屏幕截图以获得进一步的帮助。
https://stackoverflow.com/questions/63237539
复制相似问题