当前位置: 首页 > 知识库问答 >
问题:

session.save()不起作用,如果Cascade类型不是全部?

史昊焱
2023-03-14
public class Instructor{
    @OnetoOne(cascade=CascadeType.Persist)
    @JoinColumn(name="instructor_detail")
    public InstructorDetail detail;
}

我得到错误“Object references an unsaved transient instance-在刷新之前保存transient instance:”,但是当我使用session.persist(instructor)时,两个实体都保存到DB?

保存和持久wrt到CascadeType之间的区别是什么?

共有1个答案

黄伟
2023-03-14

您可以在Hibernate会话的Java API文档中找到信息:

/**
 * Make a transient instance persistent. This operation cascades to associated
 * instances if the association is mapped with {@code cascade="persist"}
 * <p/>
 * The semantics of this method are defined by JSR-220.
 *
 * @param object a transient instance to be made persistent
 */
void persist(Object object);

所以这个方法起作用是因为您定义了@OneToOne(cascade=cascadeType.persist)

/**
 * Persist the given transient instance, first assigning a generated identifier. (Or
 * using the current value of the identifier property if the <tt>assigned</tt>
 * generator is used.) This operation cascades to associated instances if the
 * association is mapped with {@code cascade="save-update"}
 *
 * @param object a transient instance of a persistent class
 *
 * @return the generated identifier
 */
Serializable save(Object object);

因此,要使其工作,您必须添加cascade save-update,但是:save-update是特定于Hibernate的,而不是JPA的。所以您不应该使用Save。

 类似资料:
  • 问题内容: 我与用户和角色之间有一个多对多的关系,并带有一个role_user表。我的迁移设置如下(简化): table: table: table: 因此,根据文档,我将我的外键设置为unsigned。 现在,我添加了几个用户,并附加了一些角色- 一切正常。但是,当我删除一个用户()时,该用户在表中的行不会被删除,这导致了多余的行。 我究竟做错了什么? MySQL + InnoDB 编辑:抓取模

  • 问题内容: 我正在使用selenium编写测试。在那些测试中,我需要在表格的字段中输入数字。 这是html: 和代码: 顺便说一句,例如,如果我将字段的类型更改为“文本”,则完全没有问题。此外,还可以很好地工作(但在使用引导程序时却无法正常工作),并且一直都在工作。 selenium版本:2.41.0 Firefox版本:29.0 问题答案: 因为您使用的是Firefox29。请降级到Firefo

  • 问题内容: 我有一个php表单(后跟代码),带有一个按其()运行的提交按钮。在JSON事件代码中,我正在测试是否使用提交了表单。我的问题是JSON事件代码似乎无法识别。 这是表单边码部分。 这是JSON的顶部… 任何帮助非常感谢 问题答案: 如果没有任何值( 空数组 )将起作用,但是在您的情况下,如果您提交的值没有任何值,您仍然会得到如下所示的数组,并且它不是空的: 仅在返回时将返回true 但这

  • 问题内容: 以下代码适用于Spark 1.5.2,但不适用于Spark 2.0.0。我正在使用Java 1.8。 我收到以下错误 我无法确定Spark API是否已更改或其他原因。请帮忙。谢谢。 问题答案: 在2.0中,返回而不是。试试这个:

  • 问题内容: 我一直在发疯,试图使评论条件生效,但我没有运气能有人解释我做错了什么吗? 这是我的代码: 发生的事情令人沮丧地不一致。当我在 IE8中 使用上述代码加载页面时,会收到消息 “ IE 低于 版本9”, 对吗?否,因为当我在 IE10中 加载SAME PAGE时,收到消息 “浏览器不是IE” 为什么会认为IE10不是IE浏览器?我一直在逐页进行爬网,但是从我发现的代码来看,似乎没有什么错。

  • 我在JavaEE(泽西)与JPA的应用程序,我有一个问题与未初始化的实体。我有3个实体汽车,业主,房子,汽车可以有多个业主和业主可以有多个房子。当我返回(entityManager.find)汽车然后车主被初始化。当我返回房子然后业主初始化,但车不是。我希望能够调用House.getOwner(). getCar(). getId()。现在我必须打电话给House,然后打电话给Owner以获得Ca