【问题标题】:How to assign ID value to another field while creating new record using Spring Data JPA如何在使用 Spring Data JPA 创建新记录时将 ID 值分配给另一个字段
【发布时间】:2019-05-23 19:35:49
【问题描述】:

我必须在创建新记录时为 createdBy 字段分配 id 字段,即 user_id。

尝试使用以下代码:

User user = new User();
user.setUserName("test");
user.setUserRegisteredDate(CalendarUtil.getCurrentTimeStamp());
user.setCreatedBy(user.getUserId());//NOT NULL field
userRepository.save(user);

但保存失败,因为 createdBy 没有任何值,即 NULL

如何在使用 Spring Data JPA 创建新记录时将 ID 值分配给另一个字段?

【问题讨论】:

  • 要么验证用户,因此 user_id 不能为零。也很想知道为什么要通过在 2 个字段中设置相同的值来做到这一点?
  • @Alien 在我们的应用程序中,用户也可以从应用程序代码和数据库中创建。如果从数据库创建,则 createdBy 值将是管理员用户 ID。否则它将是该记录的 user_id。所以 user_id = created_by
  • 登录后会创建用户吗?如果是这种情况,则将登录的用户ID设置为该字段。
  • @Alien No. 一旦用户提供输入,GUI 将调用用户注册 API。
  • 能否请您在问题中添加用户类?

标签: hibernate jpa spring-data-jpa


【解决方案1】:

首先将实体保存到 db ,存储库保存方法返回已保存的实体,您可以从已保存的实体中获取 id。

User user = new User();
user.setUserName("test");
user.setUserRegisteredDate(CalendarUtil.getCurrentTimeStamp());
User savedUser = userRepository.save(user);
user.setCreatedBy(savedUser.getUserId());
userRepository.save(user);

【讨论】:

    猜你喜欢
    • 2020-09-20
    • 1970-01-01
    • 1970-01-01
    • 2015-05-25
    • 1970-01-01
    • 2022-11-16
    • 1970-01-01
    • 1970-01-01
    • 2017-06-20
    相关资源
    最近更新 更多