Spring Data JPA:持久化嵌套对象

时间:2015-02-18 16:05:23

标签: java spring hibernate jpa spring-data-jpa

我有一个USER(id,role_id,first,last)对象,它包含一个ROLE(id,role_name)对象。 ROLE是在DB中预定义的,数据看起来像:0,user; 1,管理员; 3 superadmin ...持久化(保存)USER并根据role_name将role_id添加到用户的最佳方法是什么?创建用户时,我知道role_name,但不知道角色ID。我是否需要首先查询角色ID然后将其添加到USER对象?我确信在Spring Data JPA中有更聪明的方法。请帮忙,谢谢。

1 个答案:

答案 0 :(得分:2)

您确实配置了存储库,对吧?

假设您有RoleRepository extends JpaRepository<Role, Long>接口,您可以定义方法Role findByRoleName(String roleName)并获取Role对象,将其附加到新创建的User对象,并通过用户存储库保留该用户。 当然,您必须在User课程中建立有效的关系,让我们说@OneToMany(cascade=ALL, mappedBy="user") private Set<Role> roles
cascade注释属性当然是可配置的。

如果您在应用程序启动时在内存中加载所有角色,那么情况会更好,因为您已将它们预定义,将它们存储到Map并在需要时从地图中获取。