Author: blavenier Date: 2013-01-15 18:05:35 +0100 (Tue, 15 Jan 2013) New Revision: 210 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/210 Log: ref refs #1920: [Persistence] Adagio Donn?\195?\169es th?\195?\169matiques - Tunning on ReferentialPersistenceService.getVessel() ("vessel" query) Modified: trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java trunk/tutti-persistence-adagio/src/main/resources/queries-override.hbm.xml Modified: trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java =================================================================== --- trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java 2013-01-15 16:11:50 UTC (rev 209) +++ trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java 2013-01-15 17:05:35 UTC (rev 210) @@ -151,14 +151,14 @@ @Override public Vessel getVessel(String vesselCode) { - Object[] source = queryUniqueWithStatus( + // Warning : return a list because more than one line could be found, + // but 'order by' assume that the first one in the good row + Iterator<Object[]> source = queryListWithStatus( "vessel", "vesselCode", StringType.INSTANCE, vesselCode, - "refDate", DateType.INSTANCE, new Date(), - "statusValidCode", StringType.INSTANCE, enumeration.STATUS_VALID_CODE, - "statusTemporaryCode", StringType.INSTANCE, enumeration.STATUS_TEMPORARY_CODE + "refDate", DateType.INSTANCE, new Date() ); - Vessel result = loadVessel(source); + Vessel result = loadVessel(source.next()); return result; } Modified: trunk/tutti-persistence-adagio/src/main/resources/queries-override.hbm.xml =================================================================== --- trunk/tutti-persistence-adagio/src/main/resources/queries-override.hbm.xml 2013-01-15 16:11:50 UTC (rev 209) +++ trunk/tutti-persistence-adagio/src/main/resources/queries-override.hbm.xml 2013-01-15 17:05:35 UTC (rev 210) @@ -360,22 +360,10 @@ WHERE v.code = :vesselCode AND v.status.code IN (:statusValidCode, :statusTemporaryCode) - AND vrp.vesselRegistrationPeriodPk.startDateTime = - ( - SELECT MAX(vrp2.vesselRegistrationPeriodPk.startDateTime) - FROM VesselRegistrationPeriodImpl vrp2 WHERE - vrp2.vesselRegistrationPeriodPk.vessel.code = v.code - AND (vrp2.vesselRegistrationPeriodPk.startDateTime <= :refDate OR :refDate IS NULL) - GROUP BY vrp2.vesselRegistrationPeriodPk.vessel.code + AND NOT(coalesce(vrp.endDateTime, '2999-12-31 00:00:00') < coalesce(:refDate,sysdate) + OR vrp.vesselRegistrationPeriodPk.startDateTime > coalesce(:refDate,sysdate) ) - AND vf.startDateTime = - ( - SELECT MAX(vf2.startDateTime) - FROM VesselFeaturesImpl vf2 WHERE - vf2.vessel.code = v.code - AND (vf2.startDateTime <= :refDate OR :refDate IS NULL) - GROUP BY vf2.vessel.code - ) + ORDER BY vf.startDateTime DESC ]]> <query-param name="vesselCode" type="java.lang.String"/> <query-param name="refDate" type="java.util.Date"/>