为什么我不能使用相同的实例使用 JPA 存储库将详细信息保存在数据库中?

Why can't I use same instance to save details in database using JPA repository?

我是 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( "xyz" );
departmentDetails.setCreatedBy( "xyz" );
departmentDetails.setCreatedOn( new Timestamp( System.currentTimeMillis() ) );
departmentDetails.setModifiedOn( new Timestamp( System.currentTimeMillis() ) );

departmentDetails = departmentDetailsRepository.save( departmentDetails );

我没有创建新对象,而是在将其详细信息(通过调用 departmentDetailsRepository.save( departmentDetails );)保存到数据库后再次使用它。 但是当我执行这个时,只有第二个细节,即部门 ECE 创建 xyz被保存,但不是第一条记录。

我正在使用 spring 数据的 jpa 存储库,如下所示:

public interface DepartmentRepository extends JpaRepository<Department, Long> {}

我做错了什么?

您需要创建新实例才能创建 "new" 行。

你用错了。

试试这个

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

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

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