【问题标题】:Querying through JPA通过 JPA 查询
【发布时间】:2018-02-20 13:28:40
【问题描述】:

我有一个关于通过 JPA 获取数据的问题,

假设我有一个实体,并且该实体与其他相关实体具有 OnetoOne 关系以及 OneToMany。

在 Hibernate 或 JPA 中是否有任何 API,如果我为 Entity 类和相关实体类设置少量值,我会得到与这些值匹配的 Entity 类列表。

例如:

Entity e = new Entity();
e.setVar1("Test1");
e.setVar2("Test2");

SiblingEntity se = new SiblingEntity(); // OnetoOne with Entity class
se.setVar1("Var1");

e.setSiblingEntity(se);

ChildEntity ce = new ChildEntity(); // OnetoMany with Entity class
ce.setVar1("value1");

e.getChildEntities().add(ce);

现在我们有了一个带有兄弟实体和子实体的根实体 e。

是否有任何 API 可以为我提供以下结果?就像下面提到的那样:

List elist = entityDAO.getEntityList(e);

elist 必须包含满足我们上面提到的条件的实体类列表。

谢谢

【问题讨论】:

    标签: hibernate jpa


    【解决方案1】:

    您想要一种示例查询,我不知道有一个框架可以用 JPA 做到这一点,但是 JQL 可以在您完成作业时非常简单地表达:

    entityManager.createQuery(
       "select e from Entity e where e.var1 = 'Test1' 
        and e.var2 = 'Test2' and e.siblingEntity.var1 = 'Var1' 
        and e.childEntity.var1 = 'value1'").getResultList();
    

    如果实体关系定义正确,应该交付你想要的。

    搜索 QBE 和 JPA 我发现以下链接:

    hibernate-query-example-qbe

    也许那是根据你的意图。

    【讨论】:

    • 感谢@aschoerk 的快速回复,但我想不要为此写任何查询。
    • 在不使用查询的情况下,API 应该智能地识别我们传递的分离实体中的非空值,在这些实体之间进行 fetch join 并返回根实体列表。
    • 非常感谢@aschoerk,这正是我想要的
    猜你喜欢
    • 1970-01-01
    • 2015-02-21
    • 1970-01-01
    • 2011-09-02
    • 2013-09-19
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    相关资源
    最近更新 更多