q = createQuery( " select * from ( ( SELECT * FROM ( SELECT dt.route_id , dt.amount , dc.card_type_id FROM DDRC_TRANS\n" +
"dt , DDRC_CARD dc WHERE ( dt.card_id = dc.id AND dt.insert_time >= ('02-JAN-2000 04:00:00 AM')\n" +
"AND dt.insert_time <= ('02-FEB-2050 04:00:00 AM') AND dt.route_id IN ( '1', '3' ) ) ) PIVOT\n" +
"( SUM(amount ) FOR card_type_id IN ( 1,2,3 ) ) ) )"
, clazz);
Ok Everything looks nice! I can run this query and it returns the result too!
But I have found one problem. What about If I need to set parameter? for instance like this
q = createQuery( " select * from ( ( SELECT * FROM ( SELECT dt.route_id , dt.amount , dc.card_type_id FROM DDRC_TRANS\n" +
"dt , DDRC_CARD dc WHERE ( dt.card_id = dc.id AND dt.insert_time >= ('02-JAN-2000 04:00:00 AM')\n" +
"AND dt.insert_time <= ('02-FEB-2050 04:00:00 AM') AND dt.route_id IN ( '1', '3' ) ) ) PIVOT\n" +
"( SUM(amount ) FOR card_type_id IN ( :param ) ) ) )"
, clazz);
List<String> valueList = Arrays.asList("1,2,3");
q.setParameter("param", valueList);
now here I have that type of error:
java.sql.SQLException: ORA-56900: bind variable is not supported inside pivot|unpivot operation
why? how can I fix this? Is this hibernate BUG?