Я новичок ie, использующий Hibernate, я пытаюсь сохранить объект в моей таблице Postgresql, но мой столбец с серийным идентификатором вызывает: org.hibernate.TransientObjectException
, объявление моего столбца имеет следующий вид:
@Table (schema = "inventarios", name = "inventory")
@Entity (name = "inventory")
public class Inventory implements DAO {
@Id
@GeneratedValue (strategy = GenerationType.AUTO, generator = "inventarios.inventory_id_seq")
@SequenceGenerator (name = "inventarios.inventory_pkey", sequenceName = "inventarios.inventory_id_seq", allocationSize = 1)
@Column (name = "id")
private Integer id;
....
И мой метод вставки такой:
@Override
public int insert(Object o) {
int lastId = 0;
Transaction transaction = null;
try (Session session = ConnectionFactory.getSessionFactory().openSession()) {
if (o instanceof Inventory) {
transaction = session.beginTransaction();
((Inventory) o).setLastUser(Utils.username);
lastId = (Integer) session.save(o);
transaction.commit();
} else {
Utils.showErrorDialog("No se pudo crear el registro a inventario, " +
"no se encontró la información correcta para realizar el registro.");
}
} catch (Exception e) {
if (transaction != null) {
transaction.rollback();
}
e.printStackTrace();
ErrorLogger.getInstance().log(e, Inventory.class.getName());
}
return lastId;
}
Я прочитал, что мне нужно грипп sh текущий сеанс, чтобы иметь возможность выполнить вставку, но я не знаю, как это сделать Это.
Раньше у него были эти аннотации, и он хорошо выполняет вставки, но идентификаторы генерировали их очень случайно.
@Id
@Column (name = "id")
@GeneratedValue (generator = "native")
@GenericGenerator (name = "increment", strategy = "increment")
private Integer id;
Моя Postgresql версия - 9.4, а моя спящая версия - 5.4. 10, какие-либо предложения, пожалуйста?