私のプレーヤーエンティティでは、すべてのプレーヤーのスコアの合計に含める式を使用しようとしています。
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import org.hibernate.annotations.Formula;
import com.google.gwt.user.client.rpc.IsSerializable;
@Entity
public class Player implements IsSerializable {
@Id
private String name;
@Column(nullable = false)
private Integer score;
@Formula(value = " SELECT sum(score) ")
private Integer totalScore = 0;
[...]
}
ただし、プレーヤーをロードするときに構文エラーが発生します。
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
'SELECT sum(this_.score) as formula0_0_ from Player this_' at line 1
奇妙なことに、このクエリは完全に有効に見え、休止状態と同じデータベースで実行すると、期待どおりの結果が得られます。
SELECT sum(this_.score) as formula0_0_ from Player this_
1 row(s) returned
mysql 方言を使用するように休止状態を設定しました
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
jdbc が正しいクエリに対してエラーをスローするのはなぜですか?