Спящий режим: «Поле «id» не имеет значения по умолчанию»JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Спящий режим: «Поле «id» не имеет значения по умолчанию»

Сообщение Anonymous »

Я столкнулся с, как мне кажется, простой проблемой с Hibernate, но не могу ее решить (недоступность форумов Hibernate, конечно, не помогает).

У меня есть простой класс, который я хотел бы сохранить, но продолжаю получать:

Код: Выделить всё

SEVERE: Field 'id' doesn't have a default value
Exception in thread "main" org.hibernate.exception.GenericJDBCException: could not insert: [hibtest.model.Mensagem]
at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)
[ a bunch more ]
Caused by: java.sql.SQLException: Field 'id' doesn't have a default value
[ a bunch more ]
Соответствующий код для сохраняемого класса:

Код: Выделить всё

package hibtest.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public class Mensagem  {
protected Long id;

protected Mensagem() { }

@Id
@GeneratedValue
public Long getId() {
return id;
}

public Mensagem setId(Long id) {
this.id = id;
return this;
}
}
А фактически работающий код прост:

Код: Выделить всё

SessionFactory factory = new AnnotationConfiguration()
.configure()
.buildSessionFactory();

{
Session session = factory.openSession();
Transaction tx = session.beginTransaction();

Mensagem msg = new Mensagem("YARR!");

session.save(msg);

tx.commit();
session.close();
}
Я пробовал некоторые «стратегии» в аннотации GeneratedValue, но, похоже, они не работают. Инициализация id тоже не помогает! (например, Long id = 20L).

Может ли кто-нибудь пролить свет?

EDIT 2: подтверждено: возиться с

Код: Выделить всё

@GeneratedValue(strategy = GenerationType.XXX)
не решает проблему

РЕШЕНО: повторное создание базы данных решило проблему

Подробнее здесь: https://stackoverflow.com/questions/804 ... ault-value
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»