为什么我不能一次又一次地覆盖对象并使用JPA存储库在数据库中保存详细信息?

时间:2017-08-13 05:48:47

标签: hibernate

我是java的新手,正在开发一个java spring项目。现在我要确保我已经完成的工作存储在数据库中,我手动插入一些值。

代码如下所示:

Department departmentDetails = new Department();
departmentDetails.setDepartmentName( "cse" );
departmentDetails.setStatus( 1 );
departmentDetails.setModifiedBy( "mehul" );
departmentDetails.setCreatedBy( "mehul" );
departmentDetails.setCreatedOn( new Timestamp( System.currentTimeMillis() ) );
departmentDetails.setModifiedOn( new Timestamp( System.currentTimeMillis() ) );

departmentDetailsRepository.save( departmentDetails );

departmentDetails.setDepartmentName( "ECe" );
departmentDetails.setStatus( 1 );
departmentDetails.setModifiedBy( "gowdru" );
departmentDetails.setCreatedBy( "gowdru" );
departmentDetails.setCreatedOn( new Timestamp( System.currentTimeMillis() ) );
departmentDetails.setModifiedOn( new Timestamp( System.currentTimeMillis() ) );

departmentDetails = departmentDetailsRepository.save( departmentDetails );

我没有创建新对象,而是在将其详细信息保存在数据库中后再次使用它。 但是,当我执行此操作时,只有第二个细节,即部门 ECE 创建 保存 gowdru ,但不保存第一条记录。

我在这里做错了什么?

3 个答案:

答案 0 :(得分:0)

您需要创建新实例才能创建“新”行。

答案 1 :(得分:0)

你使用的方式不对。

试试这个

Department departmentDetails = new Department();
...    
departmentDetailsRepository.save(departmentDetails);

departmentDetails = new Department();  //Create a new object.
...    
departmentDetails = departmentDetailsRepository.save(departmentDetails);

答案 2 :(得分:0)

这是因为Hibernate实际上在调用save方法之后不进行保存操作,它会在提交事务期间保留您的数据。此外,如果您使用相同的对象,它只会更新它,您甚至不需要第二次调用save。要在db中创建2条记录,您应该创建新对象,因为当前对象处于持久状态。