0

私は 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 を使用してクエリからオブジェクトをロードできますか?

4

1 に答える 1

0

Script のインスタンスは手動でのみ構築できます。JPQL でクエリを実行する場合、コンストラクタ式は List を引数として取ることができないためです。さらに、JPQL には共用体がありません。

また、SQL クエリでは、スクリプトを直接構築することはできません。これは、結果がスカラーまたはエンティティのみになる可能性があるためです。

于 2012-05-05T15:40:59.893 に答える