Я использую JPA (Hibernate) для хранения сущности на сервере MySQL 5.0.
Вот сущность в упрощенном виде:
@Entity
@Table(name = "messages")
public class Message implements Serializable
{
@Id
@GeneratedValue
@Column
private long id;
@Column
private String content;
@Column(insertable = false)
private Date read;
@Column(insertable = false)
private Date deleted;
}
Столбцы «прочитано» и «удалено» в таблице «сообщения» определены так, что они могут содержать значения NULL. Когда я впервые попытался сохранить одну из этих сущностей, я получил исключение. Очевидно, что Hibernate делал там, перечисляя столбцы «прочитано» и «удалено» в списке столбцов оператора вставки, но не в списке значений. Я обошел эту проблему с помощью оператора "inserttable = false" в аннотациях @Column, которые вы видите выше.
Теперь, однако, у меня есть большая проблема. Я хочу установить для полей чтения или даты ненулевые значения. Когда я это делаю, я получаю похожее исключение «В вашем синтаксисе SQL есть ошибка». Теперь он перечисляет все поля в части where оператора update, включая «read» и «удалено». И то, что он делает, это проверяет как "... and read = NULL". Что в MySQL, конечно, должно быть "... и читать IS NULL".
Покопавшись, я уже нашел «обновляемый» параметр для аннотации @Column. Но если я установлю это в false, и «чтение», и «удаление» вообще никогда не обновляются, так что это тоже не то, что я ищу.
... Помощь