如何使用JOINS中的本机SQL查询在DataNucleus中加载具有1对1关系的实体

时间:2017-03-22 13:35:23

标签: datanucleus

我有一个实体

class LoanApplication{
    private Account account;
    //...
}

class Account{
    private LoanApplication loanApplication;
}

我想使用以下原生查询

select * from account a left join loan_application la on a.id = la.account_id where a.id in (1,2,3,4,5);

使用LoanApplication对象获取一组帐户对象。 如何使用DataNucleus?

1 个答案:

答案 0 :(得分:1)

JDOQL没有“实体图”。也许你的意思是“获取计划”,这更灵活。无论如何,查询将类似于

SELECT FROM mydomain.Account WHERE :vals.contains(this.id)

然后将输入参数“vals”定义为int的列表。即Java语法。 并设置您的获取计划以加载loanApplication字段,因此请将以下内容添加到Account的映射中。

<fetch-group name="loanApps">
    <field name="loanApplication"/>
</fetch-group>

然后致电

q.getFetchPlan().addGroup("loanApps");

在执行查询之前。