Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JPA从带有列表成员的查询加载对象的最佳实践_Jpa_Jpql_Pojo - Fatal编程技术网

使用JPA从带有列表成员的查询加载对象的最佳实践

使用JPA从带有列表成员的查询加载对象的最佳实践,jpa,jpql,pojo,Jpa,Jpql,Pojo,我开始学习JPA,我想知道实现以下目标的最佳方法: 我需要实现一个返回脚本列表的服务,每个脚本都有一个参数列表。我简化了查询,但它是这样的: (SELECT p.DESC FROM INPUT_PARAMETERS p INNER JOIN SCRIPT_PARAMS sp ON p.PARAM_ID = sc.PARAM_I INNER JOIN SCRIPT s ON s.SCRIPT_ID = sc.SCRIPT_ID WHERE s.NAME

我开始学习JPA,我想知道实现以下目标的最佳方法: 我需要实现一个返回脚本列表的服务,每个脚本都有一个参数列表。我简化了查询,但它是这样的:

(SELECT 
    p.DESC 
FROM 
    INPUT_PARAMETERS p
    INNER JOIN SCRIPT_PARAMS sp ON p.PARAM_ID = sc.PARAM_I
    INNER JOIN SCRIPT s ON s.SCRIPT_ID = sc.SCRIPT_ID
WHERE
    s.NAME = 'name')
UNION
(SELECT 
    p.DESC 
FROM 
    OUPUT_PARAMETERS p
    INNER JOIN SCRIPT_PARAMS sp ON p.PARAM_ID = sc.PARAM_I
    INNER JOIN SCRIPT s ON s.SCRIPT_ID = sc.SCRIPT_ID
WHERE
    s.NAME = 'name')
我想返回一个POJO对象列表,如下所示:

public class Script {
    private String name;
    private List<String> params;
    public Script(){}
    public String getName()
    {
        return name;
    }
    public void setName(String pName)
    {
        name = pName;
    }
    public List<String> getParams()
    {
        return params;
    }
    public void setParams(List<String> pParams)
    {
        params = pParams;
    }   
}
公共类脚本{
私有字符串名称;
私有列表参数;
公共脚本(){}
公共字符串getName()
{
返回名称;
}
public void setName(字符串pName)
{
name=pName;
}
公共列表getParams()
{
返回参数;
}
公共无效setParams(列表pParams)
{
params=pParams;
}   
}

我想知道从查询中加载POJO对象的最佳方法是什么。最好是构建JPQL查询,还是使用本机命名查询,是否需要获取对象[]并手动构造POJO,还是使用JPA从查询中加载对象?

您只能手动构造脚本实例。当使用JPQL查询时,原因是不能将列表作为参数。此外,JPQL没有联合

同样,使用SQL查询,您不能直接构造脚本,因为结果只能是标量或实体