Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [eclipselink-users] eclipselink-users Digest, Vol 39, Issue 15

Even when I use different builder or different expression still get the same error


log.fine("registering PurchaseFraudJdo queries with session");

        // find purchases pending fraud review
        ExpressionBuilder builder1 = new ExpressionBuilder();
        ExpressionBuilder builder2 = new ExpressionBuilder();
        ReadAllQuery readAllQuery = new ReadAllQuery(PurchaseFraudJdo.class);
        readAllQuery.addArgument("pGoodCode");
        readAllQuery.addJoinedAttribute("po");

        // look for statuses 'pending review', 'blocked' or 'follow up'
        Expression pendingExp =
                builder2.get("reviewStatusCode").
                        equal(DatabaseCodes.PURCHASE_FRAUD_REVIEW_STATUS_PENDING_REVIEW).
                        or(builder2.get("reviewStatusCode").
                                equal(DatabaseCodes.PURCHASE_FRAUD_REVIEW_STATUS_BLOCKED_BY_RULES)).
                        or(builder2.get("reviewStatusCode").
                                equal(DatabaseCodes.PURCHASE_FRAUD_REVIEW_STATUS_BLOCKED_BY_SCORE)).
                        or(builder2.get("reviewStatusCode").equal(DatabaseCodes.PURCHASE_FRAUD_REVIEW_STATUS_FOLLOW_UP));

        Expression pendingExp2 =
                builder2.get("reviewStatusCode").
                        equal(DatabaseCodes.PURCHASE_FRAUD_REVIEW_STATUS_PENDING_REVIEW).
                        or(builder2.get("reviewStatusCode").
                                equal(DatabaseCodes.PURCHASE_FRAUD_REVIEW_STATUS_BLOCKED_BY_RULES)).
                        or(builder2.get("reviewStatusCode").
                                equal(DatabaseCodes.PURCHASE_FRAUD_REVIEW_STATUS_BLOCKED_BY_SCORE)).
                        or(builder2.get("reviewStatusCode").equal(DatabaseCodes.PURCHASE_FRAUD_REVIEW_STATUS_FOLLOW_UP));

        Expression exp = builder2.get("po").get("pGoodCode").equal(builder2.getParameter("pGoodCode"));
        exp = exp.and(builder2.get("po").get("date").
                greaterThanEqual(builder2.postfixSQL("SYSDATE - " + DAYS_TO_LOOK_BACK)));
        exp = exp.and(builder2.getField("CREATE_DATE").
                greaterThanEqual(builder2.postfixSQL("SYSDATE - " + DAYS_TO_LOOK_BACK)));
        exp = exp.and(pendingExp2);

        readAllQuery.setSelectionCriteria(exp);
        readAllQuery.setMaxRows(MAX_FRAUD_SEARCH_RESULTS);
        readAllQuery.addDescendingOrdering("fraudScore");
        readAllQuery.refreshIdentityMapResult();
        readAllQuery.bindAllParameters();
        server.registerToplinkQuery(FIND_ALL_PENDING_BY_PGOOD, readAllQuery);

        // count all purchases pending fraud review
        ReportQuery rptQuery = new ReportQuery(PurchaseFraudJdo.class, pendingExp);
        rptQuery.addCount();
        rptQuery.bindAllParameters();
        rptQuery.setShouldReturnSingleValue(true);
        server.registerToplinkQuery(FIND_PENDING_COUNT, rptQuery);

        // find by purchase order id
        builder2 = new ExpressionBuilder();
        ReadObjectQuery readObjectQuery = new ReadObjectQuery(PurchaseFraudJdo.class);
        readObjectQuery.addArgument("orderId");

        exp = builder2.get("po").get("oid").equal(builder2.getParameter("orderId"));

        readObjectQuery.setSelectionCriteria(exp);
        readObjectQuery.bindAllParameters();
        readObjectQuery.cascadePrivateParts();
        server.registerToplinkQuery(FIND_BY_ORDER_ID, readObjectQuery);
    }


This is the way mapping is defined


<class-mapping-descriptor xsi:type="relational-class-mapping-descriptor">
         <class>hotwire.biz.order.fraud.PurchaseFraudJdo</class>
         <alias>PurchaseFraudJdo</alias>
         <primary-key>
            <field table="PURCHASE_FRAUD" name="PURCHASE_ORDER_ID" xsi:type="column"/>
         </primary-key>
         <events xsi:type="event-policy"/>
         <querying xsi:type="query-policy"/>
         <attribute-mappings>
            <attribute-mapping xsi:type="direct-mapping">
               <attribute-name>blockReasonCode</attribute-name>
               <field table="PURCHASE_FRAUD" name="BLOCK_STATUS_CODE" xsi:type="column"/>
            </attribute-mapping>
            <attribute-mapping xsi:type="direct-mapping">
               <attribute-name>fraudScore</attribute-name>
               <field table="PURCHASE_FRAUD" name="FRAUD_SCORE" xsi:type="column"/>
            </attribute-mapping>
            <attribute-mapping xsi:type="direct-mapping">
               <attribute-name>fraudTypeCode</attribute-name>
               <field table="PURCHASE_FRAUD" name="FRAUD_TYPE" xsi:type="column"/>
            </attribute-mapping>
            <attribute-mapping xsi:type="one-to-one-mapping">
               <attribute-name>po</attribute-name>
               <reference-class>hotwire.biz.order.PurchaseOrderJdo</reference-class>
               <foreign-key>
                  <field-reference>
                     <source-field table="PURCHASE_FRAUD" name="PURCHASE_ORDER_ID" xsi:type="column"/>
                     <target-field table="PURCHASE_ORDER" name="PURCHASE_ORDER_ID" xsi:type="column"/>
                  </field-reference>
               </foreign-key>
               <foreign-key-fields>
                  <field table="PURCHASE_FRAUD" name="PURCHASE_ORDER_ID" xsi:type="column"/>
               </foreign-key-fields>
               <selection-query xsi:type="read-object-query"/>
            </attribute-mapping>
            <attribute-mapping xsi:type="direct-mapping">
               <attribute-name>reviewedBy</attribute-name>
               <field table="PURCHASE_FRAUD" name="REVIEW_CSR_ID" xsi:type="column"/>
            </attribute-mapping>
            <attribute-mapping xsi:type="direct-mapping">
               <attribute-name>reviewedDate</attribute-name>
               <field table="PURCHASE_FRAUD" name="DATE_REVIEWED" xsi:type="column"/>
            </attribute-mapping>
            <attribute-mapping xsi:type="direct-mapping">
               <attribute-name>reviewStatusCode</attribute-name>
               <field table="PURCHASE_FRAUD" name="REVIEW_STATUS" xsi:type="column"/>
            </attribute-mapping>
            <attribute-mapping xsi:type="direct-mapping">
               <attribute-name>sourceTypeCode</attribute-name>
               <field table="PURCHASE_FRAUD" name="SOURCE_TYPE" xsi:type="column"/>
            </attribute-mapping>
            <attribute-mapping xsi:type="direct-mapping">
               <attribute-name>transactionStatusCode</attribute-name>
               <field table="PURCHASE_FRAUD" name="ITINERARY_STATUS" xsi:type="column"/>
            </attribute-mapping>
            <attribute-mapping xsi:type="direct-mapping">
               <attribute-name>updateName</attribute-name>
               <field table="PURCHASE_FRAUD" name="UPDATE_NAME" xsi:type="column"/>
            </attribute-mapping>
            <attribute-mapping xsi:type="direct-mapping">
               <attribute-name>verificationStatusCode</attribute-name>
               <field table="PURCHASE_FRAUD" name="VERIFICATION_STATUS" xsi:type="column"/>
            </attribute-mapping>
            <attribute-mapping xsi:type="many-to-many-mapping">
               <attribute-name>violatedFraudRuleList</attribute-name>
               <reference-class>hotwire.biz.order.fraud.FraudRuleJdo</reference-class>
               <private-owned>true</private-owned>
               <relation-table>PURCHASE_FRAUD_RULE_VIOLATED</relation-table>
               <source-relation-foreign-key>
                  <field-reference>
                     <source-field table="PURCHASE_FRAUD_RULE_VIOLATED" name="PURCHASE_ORDER_ID" xsi:type="column"/>
                     <target-field table="PURCHASE_FRAUD" name="PURCHASE_ORDER_ID" xsi:type="column"/>
                  </field-reference>
               </source-relation-foreign-key>
               <target-relation-foreign-key>
                  <field-reference>
                     <source-field table="PURCHASE_FRAUD_RULE_VIOLATED" name="FRAUD_RULE_CODE" xsi:type="column"/>
                     <target-field table="FRAUD_RULE" name="FRAUD_RULE_CODE" xsi:type="column"/>
                  </field-reference>
               </target-relation-foreign-key>
               <container xsi:type="list-container-policy">
                  <collection-type>org.eclipse.persistence.indirection.IndirectList</collection-type>
               </container>
               <indirection xsi:type="transparent-collection-indirection-policy"/>
               <selection-query xsi:type="read-all-query">
                  <container xsi:type="list-container-policy">
                     <collection-type>org.eclipse.persistence.indirection.IndirectList</collection-type>
                  </container>
               </selection-query>
               <insert-query xsi:type="data-modify-query"/>
               <delete-query xsi:type="data-modify-query"/>
               <delete-all-query xsi:type="data-modify-query"/>
            </attribute-mapping>
         </attribute-mappings>
         <descriptor-type>independent</descriptor-type>
         <caching>
            <cache-size>128</cache-size>
         </caching>
         <remote-caching>
            <cache-size>128</cache-size>
         </remote-caching>
         <instantiation/>
         <copying xsi:type="instantiation-copy-policy"/>
         <tables>
            <table name="PURCHASE_FRAUD"/>
         </tables>
      </class-mapping-descriptor>

-----Original Message-----
From: eclipselink-users-bounces@xxxxxxxxxxx [mailto:eclipselink-users-bounces@xxxxxxxxxxx] On Behalf Of eclipselink-users-request@xxxxxxxxxxx
Sent: Thursday, November 11, 2010 6:39 AM
To: eclipselink-users@xxxxxxxxxxx
Subject: eclipselink-users Digest, Vol 39, Issue 15

Send eclipselink-users mailing list submissions to
        eclipselink-users@xxxxxxxxxxx

To subscribe or unsubscribe via the World Wide Web, visit
        https://dev.eclipse.org/mailman/listinfo/eclipselink-users
or, via email, send a message with subject or body 'help' to
        eclipselink-users-request@xxxxxxxxxxx

You can reach the person managing the list at
        eclipselink-users-owner@xxxxxxxxxxx

When replying, please edit your Subject line so it is more specific
than "Re: Contents of eclipselink-users digest..."


Today's Topics:

   1. Re: EL building select count() instead of select count(*)
      (Anuj Lal)
   2. Re: EL building select count() instead of select count(*)
      (Tom Ware)
   3. Re: EL building select count() instead of select count(*)
      (Tom Ware)


----------------------------------------------------------------------

Message: 1
Date: Thu, 11 Nov 2010 02:12:05 -0800
From: Anuj Lal <alal@xxxxxxxxxxx>
To: "eclipselink-users@xxxxxxxxxxx" <eclipselink-users@xxxxxxxxxxx>
Subject: Re: [eclipselink-users] EL building select count() instead of
        select count(*)
Message-ID:
        <D7ECC192E1809C469B612ECFC639CF898F6C48DB@xxxxxxxxxxxxxxxxxxxxxxxxxxxx>

Content-Type: text/plain; charset="us-ascii"

                Eclipselink    11.1.1.3.0 (eclipse link  2.0.3-r7973 ) not building addCount sql correctly
                Building select count()...   instead of select count(*)....

                Same code wokrs fine with 11.1.1.2.0 (  eclipse link 1.2.1-r7082)

   Code in the red causing issue

log.fine("registering PurchaseFraudJdo queries with session");

        // find purchases pending fraud review
        ExpressionBuilder builder = new ExpressionBuilder();
        ReadAllQuery readAllQuery = new ReadAllQuery(PurchaseFraudJdo.class);
        readAllQuery.addArgument("pGoodCode");
        readAllQuery.addJoinedAttribute("po");

        // look for statuses 'pending review', 'blocked' or 'follow up'
        Expression pendingExp =
                builder.get("reviewStatusCode").
                        equal(DatabaseCodes.PURCHASE_FRAUD_REVIEW_STATUS_PENDING_REVIEW).
                        or(builder.get("reviewStatusCode").
                                equal(DatabaseCodes.PURCHASE_FRAUD_REVIEW_STATUS_BLOCKED_BY_RULES)).
                        or(builder.get("reviewStatusCode").
                                equal(DatabaseCodes.PURCHASE_FRAUD_REVIEW_STATUS_BLOCKED_BY_SCORE)).
                        or(builder.get("reviewStatusCode").equal(DatabaseCodes.PURCHASE_FRAUD_REVIEW_STATUS_FOLLOW_UP));

        Expression exp = builder.get("po").get("pGoodCode").equal(builder.getParameter("pGoodCode"));
        exp = exp.and(builder.get("po").get("date").
                greaterThanEqual(builder.postfixSQL("SYSDATE - " + DAYS_TO_LOOK_BACK)));
        exp = exp.and(builder.getField("CREATE_DATE").
                greaterThanEqual(builder.postfixSQL("SYSDATE - " + DAYS_TO_LOOK_BACK)));
        exp = exp.and(pendingExp);

        readAllQuery.setSelectionCriteria(exp);
        readAllQuery.setMaxRows(MAX_FRAUD_SEARCH_RESULTS);
        readAllQuery.addDescendingOrdering("fraudScore");
        readAllQuery.refreshIdentityMapResult();
        readAllQuery.bindAllParameters();
        server.registerToplinkQuery(FIND_ALL_PENDING_BY_PGOOD, readAllQuery);

        // count all purchases pending fraud review
        ReportQuery rptQuery = new ReportQuery(PurchaseFraudJdo.class, pendingExp);
        rptQuery.addCount();
        rptQuery.bindAllParameters();
        rptQuery.setShouldReturnSingleValue(true);
        server.registerToplinkQuery(FIND_PENDING_COUNT, rptQuery);

From: Anuj Lal
Sent: Thursday, November 11, 2010 12:58 AM
To: 'eclipselink-users@xxxxxxxxxxx'
Subject: EL building select count() instead of select count(*)
Importance: High

                Eclipselink    11.1.1.3.0 (eclipse link  2.0.3-r7973 ) not building addCount sql correctly
                Building select count()...   instead of select count(*)....

                Same code wokrs fine with 11.1.1.2.0 (  eclipse link 1.2.1-r7082)




Expression pendingExp =
                builder.get("reviewStatusCode").
                        equal(DatabaseCodes.PURCHASE_FRAUD_REVIEW_STATUS_PENDING_REVIEW).
                        or(builder.get("reviewStatusCode").
                                equal(DatabaseCodes.PURCHASE_FRAUD_REVIEW_STATUS_BLOCKED_BY_RULES)).
                        or(builder.get("reviewStatusCode").
                                equal(DatabaseCodes.PURCHASE_FRAUD_REVIEW_STATUS_BLOCKED_BY_SCORE)).
                        or(builder.get("reviewStatusCode").equal(DatabaseCodes.PURCHASE_FRAUD_REVIEW_STATUS_FOLLOW_UP));

// count all purchases pending fraud review
        ReportQuery rptQuery = new ReportQuery(PurchaseFraudJdo.class, pendingExp);
        rptQuery.addCount();
        rptQuery.bindAllParameters();
        rptQuery.setShouldReturnSingleValue(true);
        server.registerToplinkQuery(FIND_PENDING_COUNT, rptQuery);


building a query like this
SELECT COUNT() FROM PURCHASE_ORDER t0, PURCHASE_FRAUD t1 WHERE (((((t1.REVIEW_STATUS = ?) OR (t1.REVIEW_STATUS = ?)) OR (t1.REVIEW_STATUS = ?)) OR (t1.REVIEW_STATUS = ?)) AND (t0.PURCHASE_ORDER_ID = t1.PURCHASE_ORDER_ID))
        bind => [P, R, S, F]


giving parsing expression

it building COUNT() instead of COUNT(*)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://dev.eclipse.org/mailman/private/eclipselink-users/attachments/20101111/03473b0e/attachment.htm>

------------------------------

Message: 2
Date: Thu, 11 Nov 2010 07:59:06 -0500
From: Tom Ware <tom.ware@xxxxxxxxxx>
To: EclipseLink User Discussions <eclipselink-users@xxxxxxxxxxx>
Subject: Re: [eclipselink-users] EL building select count() instead of
        select count(*)
Message-ID: <4CDBE89A.1010101@xxxxxxxxxx>
Content-Type: text/plain; charset=windows-1252; format=flowed

Can you provide details about how PurchaseFraudJdo is mapped?

-Tom

Anuj Lal wrote:
>                 Eclipselink    11.1.1.3.0 (eclipse link  2.0.3-r7973 )
> not building addCount sql correctly
>
>                 Building select count()?   instead of select count(*)?.
>
>
>
>                 Same code wokrs fine with 11.1.1.2.0 (  eclipse link
> 1.2.1-r7082)
>
>
>
>
>
>
>
>
>
> Expression pendingExp =
>
>                 builder.get("reviewStatusCode").
>
>
> equal(DatabaseCodes.PURCHASE_FRAUD_REVIEW_STATUS_PENDING_REVIEW).
>
>                         or(builder.get("reviewStatusCode").
>
>
> equal(DatabaseCodes.PURCHASE_FRAUD_REVIEW_STATUS_BLOCKED_BY_RULES)).
>
>                         or(builder.get("reviewStatusCode").
>
>
> equal(DatabaseCodes.PURCHASE_FRAUD_REVIEW_STATUS_BLOCKED_BY_SCORE)).
>
>
> or(builder.get("reviewStatusCode").equal(DatabaseCodes.PURCHASE_FRAUD_REVIEW_STATUS_FOLLOW_UP));
>
>
>
> // count all purchases pending fraud review
>
>         ReportQuery rptQuery = new ReportQuery(PurchaseFraudJdo.class,
> pendingExp);
>
>         rptQuery.addCount();
>
>         rptQuery.bindAllParameters();
>
>         rptQuery.setShouldReturnSingleValue(true);
>
>         server.registerToplinkQuery(FIND_PENDING_COUNT, rptQuery);
>
>
>
>
>
> building a query like this
>
> SELECT COUNT() FROM PURCHASE_ORDER t0, PURCHASE_FRAUD t1 WHERE
> (((((t1.REVIEW_STATUS = ?) OR (t1.REVIEW_STATUS = ?)) OR
> (t1.REVIEW_STATUS = ?)) OR (t1.REVIEW_STATUS = ?)) AND
> (t0.PURCHASE_ORDER_ID = t1.PURCHASE_ORDER_ID))
>
>         bind => [P, R, S, F]
>
>
>
>
>
> giving parsing expression
>
>
>
> it building COUNT() instead of COUNT(*)
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> eclipselink-users mailing list
> eclipselink-users@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/eclipselink-users


------------------------------

Message: 3
Date: Thu, 11 Nov 2010 09:36:10 -0500
From: Tom Ware <tom.ware@xxxxxxxxxx>
To: Tom Ware <tom.ware@xxxxxxxxxx>
Cc: EclipseLink User Discussions <eclipselink-users@xxxxxxxxxxx>
Subject: Re: [eclipselink-users] EL building select count() instead of
        select count(*)
Message-ID: <4CDBFF5A.7060904@xxxxxxxxxx>
Content-Type: text/plain; charset=windows-1252; format=flowed

In addition to the mapping information:

I notice that pendingExpression is being shared by both queries.  That is
certainly not an EclipseLink best practice.  What happens if you no longer share
that expression.  (i.e. create a fresh expression for each query)

-Tom

Tom Ware wrote:
> Can you provide details about how PurchaseFraudJdo is mapped?
>
> -Tom
>
> Anuj Lal wrote:
>>                 Eclipselink    11.1.1.3.0 (eclipse link  2.0.3-r7973 )
>> not building addCount sql correctly
>>                 Building select count()?   instead of select count(*)?.
>>
>>
>>
>>                 Same code wokrs fine with 11.1.1.2.0 (  eclipse link
>> 1.2.1-r7082)
>>
>>
>>
>>
>>
>>
>>
>>
>> Expression pendingExp =
>>
>>                 builder.get("reviewStatusCode").
>>
>>
>> equal(DatabaseCodes.PURCHASE_FRAUD_REVIEW_STATUS_PENDING_REVIEW).
>>
>>                         or(builder.get("reviewStatusCode").
>>
>>
>> equal(DatabaseCodes.PURCHASE_FRAUD_REVIEW_STATUS_BLOCKED_BY_RULES)).
>>
>>                         or(builder.get("reviewStatusCode").
>>
>>
>> equal(DatabaseCodes.PURCHASE_FRAUD_REVIEW_STATUS_BLOCKED_BY_SCORE)).
>>
>>
>> or(builder.get("reviewStatusCode").equal(DatabaseCodes.PURCHASE_FRAUD_REVIEW_STATUS_FOLLOW_UP));
>>
>>
>>
>>
>> // count all purchases pending fraud review
>>
>>         ReportQuery rptQuery = new ReportQuery(PurchaseFraudJdo.class,
>> pendingExp);
>>
>>         rptQuery.addCount();
>>
>>         rptQuery.bindAllParameters();
>>
>>         rptQuery.setShouldReturnSingleValue(true);
>>
>>         server.registerToplinkQuery(FIND_PENDING_COUNT, rptQuery);
>>
>>
>>
>>
>>
>> building a query like this
>>
>> SELECT COUNT() FROM PURCHASE_ORDER t0, PURCHASE_FRAUD t1 WHERE
>> (((((t1.REVIEW_STATUS = ?) OR (t1.REVIEW_STATUS = ?)) OR
>> (t1.REVIEW_STATUS = ?)) OR (t1.REVIEW_STATUS = ?)) AND
>> (t0.PURCHASE_ORDER_ID = t1.PURCHASE_ORDER_ID))
>>
>>         bind => [P, R, S, F]
>>
>>
>>
>>
>>
>> giving parsing expression
>>
>>
>>
>> it building COUNT() instead of COUNT(*)
>>
>>
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> eclipselink-users mailing list
>> eclipselink-users@xxxxxxxxxxx
>> https://dev.eclipse.org/mailman/listinfo/eclipselink-users
>


------------------------------

_______________________________________________
eclipselink-users mailing list
eclipselink-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-users


End of eclipselink-users Digest, Vol 39, Issue 15
*************************************************


Back to the top