[Java lista] eclipselink+postgresql+stored procedure
zamek
zamek at vili.pmmf.hu
2009. Júl. 29., Sze, 17:14:45 CEST
hello,
Szeretnek hasznalni egy tarolt eljarast, a bonyolult jpa subquery-k
helyett.
Van egy egyszeru eljaras: userpermissions(userId integer), ami egy
Permissions tabla egy sorat adja vissza. Termeszetesen erre van egy jpa
persistent object is.
A pg deklaracio igy nez ki:
create or replace function userpermissions (userId integer) returns
setof permissions
as '
declare
result permissions%rowType;
begin
for result in
select * from permissions
where permissions.p_id in (
select gp_permission from group_permission
where gp_group in (select g_id from user_groups
where u_id = userid))
loop
return next result;
end loop;
return;
end;
' language 'plpgsql';
Hogy tudom meghivni ezt eclipselink alol?
amit eddig probaltam:
1. Query qry = em.createNativeQuery("select * from userpermissions(?)");
qry.setParameter(1, usr.getId());
return qry.getResultList();
Ez jo lenne, csak nem Permission objektumok listajat adja vissza, hanem
tombok tombjet:(
2. @NamedStoredProcedureQueries (
@NamedStoredProcedureQuery(name="userpermissions",
procedureName="userpermissions",
parameters=@StoredProcedureParameter(name="userId",queryParameter="userId",type=Integer.class,direction=Direction.IN),
resultClass=Permissions.class, returnsResultSet=true)
)
...
Query qry =em.createNamedQuery("userpermissions");
qry.setParameter("userId", usr.getId());
return qry.getResultList();
erre kivetelt kapok: prepared statement "userpermissions" does not exist :(
3. PLSQLStoredProcedureCall plsql = new PLSQLStoredProcedureCall();
plsql.setProcedureName("userpermissions");
plsql.addNamedArgument("userId", "userId", Integer.TYPE);
ReadAllQuery q = new ReadAllQuery();
q.setCall(plsql);
q.addArgument("userId");
List args = new ArrayList();
args.add(usr.getId());
q.addArgumentValues(args);
Query query = JpaHelper.createQuery(q, em);
return query.getResultList();
ujabb kivetel:
"Query argument userId not found in the list of parameters provided
during query execution."
Egyelore kifogytam az otletekbol.
--
thx,
----------------------------------
Zoltan Zidarics programmer
PTE-PMMFK H-7621 Pecs, Boszorkany u. 2. Hungary
E-Mail: zamek at vili.pmmf.hu
----------------------------------
További információk a(z) Javalist levelezőlistáról