Я использую Play! Рамки для небольшого приложения. В модели у меня есть следующий запрос:
public static ApplicationUser getByUserName(String userName) {
return ApplicationUser.find("SELECT u FROM ApplicationUser u WHERE u.userName = ?", userName).first();
}
Это прекрасно работает с DB H2 в памяти, но когда я использую Postgres, я получаю следующую ошибку:
22:57:10,371 WARN ~ SQL Error: 0, SQLState: 42883
22:57:10,371 ERROR ~ ERROR: operator does not exist: character varying = bytea
Hint: No operator matches the given name and argument type(s). You might need to add explicit type casts.
Position: 167
Когда я приведу параметр как:
ApplicationUser.find("SELECT u FROM ApplicationUser u WHERE u.userName = CAST(? AS string)", userName).first()
Тогда это работает. Но зачем это нужно? Это может быть ошибка Hibernate?
Обновление:
Я понизил версию игры с 1.2.4 до 1.2.3, и теперь она работает. Я думаю, что проблема заключается в поставляемом драйвере postgres jdbc, вероятно.
Обновление II : проблема все еще не решена. Я снова получаю ту же ошибку для запроса:
ApplicationRole.find("byName", name).first();
Ошибка:
JPAQueryException occured : Error while executing query SELECT u FROM ApplicationUser u WHERE u.userName = ?: ERROR: operator does not exist: character varying = bytea Hint: No operator matches the given name and argument type(s). You might need to add explicit type casts.
В application.conf
У меня есть:
jpa.dialect = org.hibernate.dialect.PostgreSQLDialect
Ни у кого нет этой ошибки?