【问题标题】:Criteria query for many-to-one unidirectional relationship多对一单向关系的条件查询
【发布时间】:2015-07-23 09:13:12
【问题描述】:

这个question 回答了相反的关系。我一直在尝试为以下模型提出标准查询:

@Entity
public class One {

    @Id
    private BigInteger supplierId;

    @Column(name = "name")
    String name;


    ...
}

@Entity
public class Many {

    @Id
    private BigInteger posId;

    @ManyToOne
    @JoinColumn(name = "column_name")
    One one;

    @Column(name = "description")
    String description;
}

我无法更改模型。我最常以这种方式保持单向。我正在尝试针对以下情况提出 Criteria Builder 代码: -我将获得以下属性:namdesc。我需要找到name属性等于nam的所有One实体,并且有一个相关的Many实体,其描述属性等于desc

【问题讨论】:

    标签: java sql jpa criteria-api


    【解决方案1】:
    Criteria query = this.getSession().createCriteria(Many.class);
    query = query.add(Restrictions.eq("one.name", nam));
    query = query.add(Restrictions.eq("description", desc));
    query.list();
    

    这种方式行不通??

    【讨论】:

    • 我会将它翻译到 JPA 标准构建器并检查它是否有效。但我怀疑它不会。我认为我需要两个根才能使其工作,并且需要一个连接。
    • 另请注意,我正在寻找的结果类型为 One
    • 只需使用 may.getOne() 获取值还是将其设置为急切?您也可以在条件中使用子查询...
    猜你喜欢
    • 1970-01-01
    • 2021-10-25
    • 1970-01-01
    • 2014-09-03
    • 2013-11-18
    • 2017-08-07
    • 1970-01-01
    • 2019-05-18
    • 1970-01-01
    相关资源
    最近更新 更多