Java org.hibernate.Session.save()触发DB插入

Java org.hibernate.Session.save()触发DB插入,java,hibernate,jpa,Java,Hibernate,Jpa,我遇到了一个问题,我的实体被插入到数据库中,而没有调用任何“flush”, 也许有人知道在什么情况下session.save会立即触发db insert 我想我想保存(但不是保存(!)的对象中唯一有趣的部分是 您是否手动处理交易?如果是,则应在调用save()之前启动事务。调用save()后提交事务。我相信这可能是因为没有启动交易 如果上述情况并非如此,则由于默认的休眠刷新模式为AUTO,因此在不使用flush()的情况下进行保存。保存时尝试将其更改为COMMIT,但不保留输出是什么?对象被插入

我遇到了一个问题,我的实体被插入到数据库中,而没有调用任何“flush”, 也许有人知道在什么情况下session.save会立即触发db insert

我想我想保存(但不是保存(!)的对象中唯一有趣的部分是


您是否手动处理交易?如果是,则应在调用
save()
之前启动事务。调用
save()
后提交事务。我相信这可能是因为没有启动交易


如果上述情况并非如此,则由于默认的休眠刷新模式为
AUTO
,因此在不使用
flush()
的情况下进行保存。保存时尝试将其更改为
COMMIT

,但不保留输出是什么?对象被插入到数据库中,(我只是创建对象,然后调用session.save(Object),其他什么都没有)您希望
save()
做什么
save()
用于将数据写入数据库到目前为止,我们已经将hibernate与那些xyz.hbm.xml文件一起使用,现在我添加了一个使用hibernate与注释的类,这个使用注释的类的对象现在插入到数据库中,其他对象(来自通过hbm.xml文件配置的类)仅在调用时保存“persist”(有没有办法配置“save”的行为?)请参见类似的内容和@vlad mihalcea的答案。
  @javax.persistence.Id
  @javax.persistence.GeneratedValue(strategy = GenerationType.IDENTITY)
  @javax.persistence.Column(name = "EM_id")
  private Long     id;

  @javax.persistence.Version
  @javax.persistence.Column(name = "version")
  private int      version;