JPA 休眠多对一关系

时间:2021-01-16 15:39:38

标签: java hibernate jpa

我有 2 个实体 User 和 Venue。一个用户可以有多个场所。该表如下所示: enter image description here

user_id 是 Venue 表中的外键。 我正在尝试创建一个查询以通过 user_id 检索所有场地。这就是我所拥有的:

@Override
public List<Venue> findVenueByOwnerId(Long userId) {
        return em.createQuery("select v from Venue v where v.user.id = :ownerId", Venue.class)
                .setParameter("ownerId", userId)
                .getResultList();
}

我做错了什么?

编辑:

这些是我的映射: 对于用户类:

@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", updatable = false, nullable = false)
private Long id;
private String email;
private String username;
private String password;
private String firstName;
private String lastName;

@OneToMany
@JoinColumn(name = "user_id")
private List<Venue> venues;

场地类:

@Entity
public class Venue {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", updatable = false, nullable = false)
private Long id;

private String name;
private String location;
private int capacity;

@ManyToOne
@Column(name = "user_id", updatable = false, nullable = false)
private User user;

如果我试图在 Venue 类中为 User 添加 getter 和 setter,它会抛出这个错误:

<块引用>

引起:org.hibernate.MappingException:无法确定类型:razvan.sem3.project.model.User,在表:地点,列:[org.hibernate.mapping.Column(user)]

0 个答案:

没有答案