Я понял, что нужно вызвать session.flush() для объектов, чей первичный ключ не является GeneratedValue, прежде чем они будут сохранены в базе данных. И я должен сделать это, хотя у меня уже автокоммитта установлена на true. Вот моя конфигурация спящего режимаHibernate session.flush() хотя autocommit установлен
<property name="hibernate.dialect">${hibernate.dialect}</property>
<property name="hibernate.connection.driver_class">${hibernate.connection.driver_class}</property>
<property name="hibernate.connection.url">${hibernate.connection.url}</property>
<property name="hibernate.connection.username">${hibernate.connection.username}</property>
<property name="hibernate.connection.password">${hibernate.connection.password}</property>
<property name="connection.autocommit">true</property>
и здесь является примером для лица, для которого нужно вызвать session.flush() после того, как в коде после сохранения, пока он не упорствовал
@Id
@Column(name = "MembTypeCode")
private String memTypeCode;
@Column(name = "MemberType")
private String memberType;
...
, но и для объекты, Id которых является GeneratedValue (например, ниже), мне не нужно вызывать session.flush() в коде после сохранения, чтобы он сохранялся в базе данных, потому что у меня есть autocommit, установленный в true.
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "PrescriptId")
private int prescriptId;
@Column(name = "InvNum")
private Integer invNum;
@Column(name = "DocType")
private String docType;
...
Может кто-нибудь объяснить мне, почему я испытываю это? Я использую Hibernate 4.1.0.FINAL