【问题标题】:Select child of a OneToMany reletionship in JPA在 JPA 中选择 OneToMany 关系的孩子
【发布时间】:2023-03-20 20:45:01
【问题描述】:

我有这个实体:

@Entity
public class Person {

    @Id 
    @GeneratedValue 
    private long id;

    private String firstName;
    private String lastName;

    @Column(unique = true )
    private String token;

    @OneToMany(cascade = CascadeType.ALL)
    private List<Task> tasks;

与该实体具有 OneToMany 关系:

@Entity
public class Task {
    @Id 
    @GeneratedValue 
    private long id;

    private double time;
    private String date;

现在,如果我想从日期为“2014-12-12”的人那里获取所有任务,JPQL 查询会是什么样子?

【问题讨论】:

  • 尝试将 ManyToOne 添加到 Task 实体,但如果您不需要 Person,则只需在 Task.date 上执行 findByProperty
  • 感谢您的回答。我将如何执行 findByProperty?你能给我举个例子吗?

标签: java hibernate jpa jpql


【解决方案1】:
@Entity
public class Person {

    @Id 
    @GeneratedValue 
    private long id;

    private String firstName;
    private String lastName;

    @Column(unique = true )
    private String token;

    @OneToMany(mappedBy="person", cascade = CascadeType.ALL)
    private List<Task> tasks;

@Entity
public class Task {

    @Id 
    @GeneratedValue 
    private long id;

    @ManyToOne
    @JoinColumn(name = "person_id")
    private Person person;

    private double time;
    private String date;
}

select t from Task t where t.person.id = ? and t.date = ?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-23
    • 1970-01-01
    • 2018-11-13
    • 1970-01-01
    • 2011-01-01
    • 1970-01-01
    • 2018-02-12
    相关资源
    最近更新 更多