Spring 数据 JPA:保留嵌套对象
Spring Data JPA: persist a nested object
我有一个 USER(id, role_id, first, last) 对象,它包含一个 ROLE(id, role_name) 对象。 ROLE 是在 DB 中预定义的,数据如下:0,用户; 1、管理员; 3 superadmin... 保留(保存)USER 并根据role_name 添加role_id 到用户的最佳方法是什么?创建用户时,我知道 role_name,但不知道角色 ID。我是否需要先查询角色 ID,然后将其添加到 USER 对象?我确信在 Spring Data JPA 中有一种更聪明的方法可以做到这一点。请帮助,谢谢。
您确实配置了存储库,对吗?
假设您有 RoleRepository extends JpaRepository<Role, Long>
接口,您可以定义方法 Role findByRoleName(String roleName)
并获取 Role
对象,将其附加到新创建的 User
对象并通过用户存储库保留该用户。
当然,你必须在 User
class 中有有效关系,比方说 @OneToMany(cascade=ALL, mappedBy="user") private Set<Role> roles
.
cascade
注解属性当然是可配置的。
更好的是,如果你在应用程序启动时将所有角色加载到内存中,因为你已经预定义了它们,将它们存储到 Map
并在需要时从地图中获取。
我有一个 USER(id, role_id, first, last) 对象,它包含一个 ROLE(id, role_name) 对象。 ROLE 是在 DB 中预定义的,数据如下:0,用户; 1、管理员; 3 superadmin... 保留(保存)USER 并根据role_name 添加role_id 到用户的最佳方法是什么?创建用户时,我知道 role_name,但不知道角色 ID。我是否需要先查询角色 ID,然后将其添加到 USER 对象?我确信在 Spring Data JPA 中有一种更聪明的方法可以做到这一点。请帮助,谢谢。
您确实配置了存储库,对吗?
假设您有 RoleRepository extends JpaRepository<Role, Long>
接口,您可以定义方法 Role findByRoleName(String roleName)
并获取 Role
对象,将其附加到新创建的 User
对象并通过用户存储库保留该用户。
当然,你必须在 User
class 中有有效关系,比方说 @OneToMany(cascade=ALL, mappedBy="user") private Set<Role> roles
.
cascade
注解属性当然是可配置的。
更好的是,如果你在应用程序启动时将所有角色加载到内存中,因为你已经预定义了它们,将它们存储到 Map
并在需要时从地图中获取。