Eugene Afonin created OPENJPA-2473:
--------------------------------------

             Summary: Parameters order in prepared statement changes on the 
second run
                 Key: OPENJPA-2473
                 URL: https://issues.apache.org/jira/browse/OPENJPA-2473
             Project: OpenJPA
          Issue Type: Bug
    Affects Versions: 2.0.0
         Environment: Windows 7 (6.1 7601 SP1), Websphere
WSJPA-2.0.0-r1118:2068
openjpa 2.0.0-r422266:935683
Oracle (ojdbc6)
            Reporter: Eugene Afonin
            Priority: Blocker


Named query:
@NamedQuery(name = Dcard.FIND_BASE_CARD_BY_DEPOSIT,
                query = "select d, coalesce(d.blockcode, 1) as blkd, 
coalesce(d.endDate, :nulldate) as enddt from Dcard d where "
                        + "d.deposit.majorId = :dMajorId and d.deposit.minorId 
= :dMinorId and d.deposit.megaId = :megaId "
                        + "and d.holdercode = 0 order by blkd ASC, enddt DESC")

is executed by the following code

TypedQuery<Object[]> query = 
getEntityManager().createNamedQuery(Dcard.FIND_BASE_CARD_BY_DEPOSIT, 
Object[].class);
        query.setParameter(D_MAJOR_ID, depositKey.getMajorId());
        query.setParameter(D_MINOR_ID, depositKey.getMinorId());
        query.setParameter(MEGA_ID, depositKey.getMegaId());
        query.setParameter("nulldate", new Date(0), TemporalType.DATE);
        List<Object[]> list = query.getResultList();

Query is excuted as
prepstmnt 1743939570 SELECT t0.id_major, t0.id_mega, t0.id_minor,  
COALESCE(t0.blockcode,1) AS blkd,  COALESCE(t0.enddate,?) AS enddt FROM 
deposit.dcard t0, deposit.deposit t1 WHERE (t1.id_major = ? AND t1.id_minor = ? 
AND t1.id_mega = ? AND t0.holdercode = ?) AND t0.deposit_major = t1.id_major 
AND t0.deposit_minor = t1.id_minor AND t0.id_mega = t1.id_mega ORDER BY blkd 
ASC, enddt DESC [params=(Timestamp) 1970-01-01 03:00:00.0, (long) 189018, 
(long) 222, (int) 38, (long) 0]
on the first time after server restart.
Any subsequent run results in:
  prepstmnt 1494440211 SELECT t0.id_major, t0.id_mega, t0.id_minor,  
COALESCE(t0.blockcode,1) AS blkd,  COALESCE(t0.enddate,?) AS enddt FROM 
deposit.dcard t0, deposit.deposit t1 WHERE (t1.id_major = ? AND t1.id_minor = ? 
AND t1.id_mega = ? AND t0.holdercode = ?) AND t0.deposit_major = t1.id_major 
AND t0.deposit_minor = t1.id_minor AND t0.id_mega = t1.id_mega ORDER BY blkd 
ASC, enddt DESC [params=(long) 189018, (long) 222, (int) 38, (Timestamp) 
1970-01-01 03:00:00.0, (long) 0]
causing oracle error (type mismatch for the first parameter)



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to