【问题标题】:Best practices using JPA to load object from query with a list member使用 JPA 从带有列表成员的查询中加载对象的最佳实践
【发布时间】:2012-05-04 19:54:32
【问题描述】:

我刚开始使用 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;
    }   
}

我想知道从查询中加载 POJO 对象的最佳方式是什么。是最好构建一个 JPQL 查询,还是可以使用原生命名查询,我是否需要获取一个 object[] 并手动构建我的 POJO,或者我可以使用 JPA 从查询中加载对象吗?

【问题讨论】:

    标签: jpa jpql pojo


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多