简单地来看,将一个游离的对象要被持久化(save)时报错。
我们知道要持久化对象时候,通常Hibernate会根据ID生成策略自动生成ID值,但是这个对象ID已经有值,所有抛错。这个错误是我在配置如下1一对多@OneToMany的关联关系时报的错。
@OneToMany(targetEntity = Role.class, cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinTable(name = "sys_user_role", joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "role_id", referencedColumnName = "id", unique = true))
private Set<Role> roles = new HashSet<>();
因为级联关系是CascadeType.ALL,所以save时会保存级联的对象Role,但是Role已经存在,因此就报错了。将cascade改为CascadeType.MERGE或者CascadeType.REFRESH即可,表示级联对象在Role表存在则进行update操作,而不做save操作。级联操作时谨慎用CascadeType.ALL
<script type="text/javascript">
$(function () {
$('pre.prettyprint code').each(function () {
var lines = $(this).text().split('\n').length;
var $numbering = $('<ul/>').addClass('pre-numbering').hide();
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i <= lines; i++) {
$numbering.append($('<li/>').text(i));
};
$numbering.fadeIn(1700);
});
});
</script>
版权声明:本文为博主原创文章,未经博主允许不得转载。
分享到:
相关推荐
javax.persistence.PersistenceException: detached entity passed to persist 当你尝试保存一个已经与JPA上下文断开连接(即处于“游离”状态)的实体时,会抛出此异常。在JPA中,只有处于托管状态的实体才能被...
9. 异常处理:分析在使用Hibernate时可能出现的常见异常,以及如何进行有效的错误处理和调试。 10. 性能优化:讨论如何通过缓存策略、批处理、延迟加载等手段提高Hibernate应用的性能。 11. 综合案例:通过实际...
1. Entity(实体):在Hibernate中,实体通常对应于数据库中的表,通过@Entity注解标识Java类为实体。 2. Primary Key(主键):每个实体都有一个唯一的标识符,用@Id注解标记为主键。 3. Mapping(映射):通过...
2. **对象状态:** Hibernate定义了四种对象状态:瞬时(Transient)、持久化(Persistent)、托管(Managed)和脱管(Detached)。了解这些状态对于正确管理和更新对象至关重要。 3. **配置文件:** Hibernate使用...
《Hibernate in Action》是由Manning出版社出版的一本深入解析Hibernate框架的专业书籍,它全面而详尽地介绍了如何在Java应用程序中高效地使用Hibernate进行对象关系映射(ORM)。这本书不仅适合初学者,也对有经验...
`org.hibernate.tuple.entity.PojoEntityTuplizer`等类展示了这部分功能。 10. **连接池管理**:Hibernate可以与多种连接池(如C3P0、DBCP等)集成,实现数据库连接的高效复用。源码中涉及的`org.hibernate....
1. **Hibernate核心概念**:包括实体(Entity)、标识符(Identifier)、持久化类、对象状态(Transient、Persistent、Detached)、Session、Transaction等。 2. **配置与环境设置**:讲解如何在项目中引入...
【hibernate课件】 本课件集合涵盖了Hibernate框架的核心概念和主要功能,旨在帮助学习者深入理解并掌握这一强大的Java对象关系映射(ORM)工具。Hibernate是Java开发中用于简化数据库操作的一个开放源代码框架,它...
【Hibernate Criteria 用法详解】 Hibernate Criteria API 是一种面向对象的查询方式,它提供了一种比HQL(Hibernate Query Language)更为简洁且直观的查询手段。通过Criteria API,开发者可以构建复杂的查询条件...
在本文中,我们将探讨如何将Hibernate与Java Persistence API (JPA) 结合使用。首先,我们需要了解JPA的基本概念。 **1. 什么是JPA?** Java Persistence API (JPA) 是Java平台上的一个标准接口,它定义了用来管理...
- Hibernate管理的对象生命周期包括瞬时态(Transient)、持久态(Persistent)、托管态(Managed)、脱管态(Detached)和删除态(Removed)。 以上就是“Hibernate考试题.pdf”中涉及到的Hibernate相关知识点,...
2.java.lang.IllegalStateException: Adapter is detached. 原因: 1.单线程一次执行一个请求可以正常执行,如果使用多线程,同时执行多个请求时就会出现连接超时. 2.HttpConnection没有连接池的概念,多少次请求就...
1. 实体(Entity):在Hibernate中,实体对应于数据库中的表,通常是一个Java类,其实例表示数据库中的行。 2. 映射(Mapping):使用XML文件(hibernate.cfg.xml和.hbm.xml)或注解来定义Java类和数据库表之间的...
1. 实体(Entity):在Hibernate中,实体代表数据库表,通常是一个Java类。 2. 映射(Mapping):使用Hibernate XML配置文件或注解来定义实体类与数据库表之间的关系。 3. Session:它是Hibernate的主要工作单元,...
Hibernate 是一个开源的对象关系映射(ORM)框架,它允许Java开发者将数据库操作与对象模型进行松耦合,使得在编程时可以更加关注业务逻辑,而不是底层的SQL语句。这个经典课件针对想要深入理解和掌握Hibernate框架...
《深入浅出Hibernate》是一本全面解析Hibernate框架的中文教程,旨在帮助读者深入理解并熟练掌握Hibernate在实际开发中的应用。Hibernate是一个强大的Java对象关系映射(ORM)框架,它简化了数据库操作,使得开发者...
6. 支持多对一(One-to-Many)、一对多(Many-to-One)、一对一(One-to-One)和多对多(Many-to-Many)的关系映射。 三、使用步骤 1. 配置Hibernate:设置hibernate.cfg.xml文件,包含数据库连接信息、方言、缓存...