spring entity:返回已创建记录的id

时间:2018-04-04 09:58:00

标签: java spring entity

我有AccountantRepository

@Repository("accountantRepository")
@Transactional
public interface AccountantRepository extends JpaRepository<Accountant, Long>

AccountantServiceImpl

@Service("accountantService")
public class AccountantServiceImpl implements AccountantService{

    @Autowired
    private AccountantRepository accountantRepository;

    @Override
    public Accountant saveAccountant(Accountant newAccountant, String role) {
        return accountantRepository.save(newAccountant);
    }
}

当我这样做时accountantRepository.save(newAccountant);

如何获取新创建的记录的ID?

2 个答案:

答案 0 :(得分:0)

使用JpaRepository.save()返回的实例。它将包含id值。

CrudRepository.save()方法(声明save())指定:

  

将返回的实例用作进一步操作作为保存操作   可能已经完全改变了实体实例。

答案 1 :(得分:0)

您可以直接从实体本身获取ID。 newAccountant.getId()(或曾经是字段)将在调用save方法后返回数据。 如下所示 -

 @Override
    public int saveAccountant(Accountant newAccountant, String role) {
        accountantRepository.save(newAccountant);

return newAccountant.getId();
    }

此引用将在hibernate会话中可用,而hibernate将id设置为persisited对象。