2012-10-23 81 views
1

以下JPQL:JPQL:在更新設置爲null列

UPDATE SignIn signIn SET signIn.cookieUUID = null WHERE signIn.user.id = :userID 

給我下面的錯誤,因爲 「=空」 的:

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IS NULL WHERE `B0`.`ID` = 9' at line 1 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 

但它的工作原理,當我設置該字段爲空字符串(='')。

那麼如何使用JQPL將列設置爲null?

回答

1

我認爲它NULL(以大寫)::參考JPQLEclipselink

UPDATE SignIn signIn SET signIn.cookieUUID = NULL WHERE signIn.user.id = :userID 

或者使用PARAM查詢爲:

 String sQuery = "UPDATE SignIn signIn SET signIn.cookieUUID = :cookieUUID "+ 
       "WHERE signIn.user.id = :userID"; 
    Query query= entityManager.createQuery(sQuery); 
    query.setParameter("cookieUUID", null); 
    query.setParameter("userID", userID); 
    query.executeUpdate(); 
+0

這仍然給我非常相同的錯誤(我也試過之前問);) – AndrewBourgeois

+0

該字段只是註釋@Column,這隱含意味着該列是可空的。 – AndrewBourgeois

+0

@AndrewBourgeois:你可以使用參數查詢嗎?我嘗試使用EclipseLink,似乎正在工作。 –

0

有一個similar post這裏(對於HQL)。它應該可以幫助你解決它。

希望它有幫助。