为什么我不能使用相同的实例使用 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 条记录,您应该创建新对象,因为您当前的对象处于持久状态。
我是 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 条记录,您应该创建新对象,因为您当前的对象处于持久状态。