我在spring环境下,启动容器并向数据库一张表插了几条记录.主键是采用自增长策略.
但是我采用多线程方式出现了异常.我先贴下代码
public class TestApp extends Thread{
private static DBService dbservice;
private static TableSystemBeans tbs = new TableSystemBeans(111,"showname",null,null);
static{
ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
dbservice = (DBService) app.getBean("dbserviceimpl");
}
public static void main(String[] args) {
for(int i=0;i<5;i++){
Thread t = new TestApp();
t.start();
}
}
@Override
public void run(){
for(int i=0;i<3;i++){
System.out.println(this.currentThread().getName()+"_mysname");
dbservice.saveObject(tbs);
}
}
}
异常提示detached entity passed to persist:
在网上查看原因是:是一个游离的对象要被持久化(save)时,其ID既要ORM框架为它生成ID值,而此实体的ID却已然有值。
反应在代码里面的问题就是每次保存的都是同一个对象,在第一次保存后就有了ID值,再次插入就会有
identifier of an instance of xxx.xxx was altered from ...异常
如果将tbs对象在每次保存前new出来就不会报错.测试通过.
分享到:
相关推荐
javax.persistence.PersistenceException: detached entity passed to persist 当你尝试保存一个已经与JPA上下文断开连接(即处于“游离”状态)的实体时,会抛出此异常。在JPA中,只有处于托管状态的实体才能被...
4. **实体状态异常**: Hibernate在操作实体时会根据其生命周期状态进行处理,如果出现“ detached entity passed to persist”之类的错误,可能是因为实体状态管理不当。确保在操作实体前正确处理其状态(如merge、...
9. **错误处理和日志记录**:理解Hibernate常见的错误和异常,如 detached entity passed to persist 等,并配置合适的日志系统,如Log4j或SLF4J,以便追踪应用运行状态。 总的来说,Hibernate AIP涵盖了从项目初始...
它确保在用户请求的整个生命周期内,Hibernate的Session保持打开状态,从而避免了“懒加载”时可能出现的“Detached entity passed to persist”错误。在Spring中,通过开启`<tx:annotation-driven>`和配置`...
此外,如果对象已经存在且有ID,persist()不会抛出异常,而是简单地忽略该操作,这避免了数据冗余的风险。 三、merge()方法 merge()方法主要用于处理游离对象(Detached Object),即将内存中的对象与数据库中的...
- `load`方法如果找不到对应的记录,会抛出`org.hibernate.ObjectNotFoundException`异常。这是因为`load`方法假设给定的ID肯定在数据库中存在,它采用延迟加载策略,先返回代理对象,当尝试访问对象属性时才会真正...
1. **生命周期**:实体Bean有三种生命周期状态:瞬时(Transient)、持久化(Persistent)和脱管(Detached)。瞬时Bean未与容器关联,不具有持久性;持久化Bean已由容器管理,并存储在数据库中;脱管Bean是从持久化...
然而,`HEAD detached`状态是使用`git submodule`时可能遇到的一个常见问题,它意味着子模块的HEAD指针不再指向任何分支的最新提交,而是指向了历史中的某个特定提交。本文将深入探讨这个问题的原因、影响以及如何...
3. **持久化**:调用persist()方法可以使一个新的Entity进入持久化状态,即将其保存到数据库。 4. **获取**:find()方法可以根据主键从数据库中加载一个Entity。 5. **更新**:调用merge()方法可以将一个Detached...
当使用EntityFramework,NHibernate或几乎任何其他跟踪实体状态的ORM时,在安装通常来自反序列化(请求,响应,文件,另一个db等)的未跟踪实体时,存在一个问题。 TrackGraph方法,但是需要手动指定每个实体的状态...
在Java的持久化框架Hibernate中,管理对象与数据库之间的交互是通过一系列的方法完成的,其中包括`save()`, `saveOrUpdate()`, `persist()`, `merge()`, 和 `update()`。这些方法各有其特点和适用场景,理解它们的...
在Java Persistence API (JPA) 中,理解和掌握实体(Entity)的状态对于有效地管理数据库中的对象至关重要。本篇学习笔记主要探讨了JPA中实体的状态及其转换,包括New、Managed、Detached和Removed四种状态。 首先...
这种做法允许开发者更加灵活地选择和组合技术,以适应项目需求,同时也避免了因框架升级或淘汰带来的迁移问题。本文将深入探讨无框架框架的核心理念、优势以及实践方法。 一、无框架框架的核心理念 1. **模块化...
- **Loading and Storing Objects**: Finally, you'll learn how to load objects from the database into Java instances and persist new or updated Java objects back to the database. #### Mapping ...
要安装,请在命令行中输入以下命令: npm install is-dom-detached输入ES模块: import isDetachedNode from 'is-dom-detached' ; CommonJS模块: const isDetachedNode = require ( 'is-dom-detached' ) ;用法...
Clean Architectures in Python A practical approach to better software design By 作者: Leonardo Giordani Pub Date: 2019 ISBN: n/a Pages: 171 Language: English Format: PDF Size: 10 Mb The clean ...
在JPA开发过程中,可能会遇到如实体不存在、并发控制问题、数据一致性异常等错误。理解这些异常的含义并妥善处理是成功使用JPA的关键。 总结,JPA作为Java的持久化框架,简化了数据库操作,通过注解和元数据实现了...
- **Entity 的生命周期和状态**:包括临时状态(Transient)、托管状态(Managed)、分离状态(Detached)和删除状态(Removed)。 - **持久化 Entity (Persist)**:使用 `persist()` 方法将新的实体实例持久化到...
安装包: npm install --save jqueryui-detached-1.11用法这个想法是将这个模块与jquery-detached结合使用。 例如: var $ = require ( 'jquery-detached-2.1.4' ) . newJQuery ( ) ; var jqueryui = require ( '...