0

JPAを使用して以下のクエリを実行していますが、以下の例外が発生しています:

JPAコード:

int count = em.createQuery(QueryCollections.getSoldProductUpdateQuery(billGuid).toString()).executeUpdate();

クエリは次のとおりです。

Query:  
 UPDATE at_product currentproduct
            JOIN
        (SELECT 
            atbillfields.billeditemguid AS productguid,
                COUNT(*) AS number_of_people_bought,
                SUM(atbillfields.billeditemqty) AS soldquantity
        FROM
            jtbillingtest.at_salesbill atsalesbill
        JOIN jtbillingtest.at_billfields atbillfields ON atsalesbill.billbatchguid = atbillfields.billbatchguid
        WHERE
            atsalesbill.billguid = '41'
        GROUP BY atbillfields.billeditemguid) soldproductdetails ON soldproductdetails.productguid = currentproduct.productguid 
    SET 
        currentproduct.productQuantity = currentproduct.productQuantity - soldproductdetails.soldquantity

jpa によってスローされた例外。

> Exception , line 1, column 34: syntax error at [JOIN]. Internal
> Exception: MissingTokenException(inserted [@-1,0:0='<missing
> SET>',<62>,1:34] at JOIN)     at
> org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:1477)
>   at myjavfxapp.dal.ProductDal.updateSoldProducts(ProductDal.java:46)
>   at
> myjavfxapp.controller.BillingController$6.handle(BillingController.java:421)
>   at

しかし、このクエリを MySQL サーバーで直接実行すると、必ず実行されます。私が何かを逃した場合は指摘してください。

4

1 に答える 1

0

JPQL と SQL は同じ言語ではありません。で SQL クエリを実行しようとしていますがexecuteQuery()、JPQL クエリが必要です。

を使用しem.createNativeQuery()ます。

于 2013-09-14T12:54:36.593 に答える