JPA检索实体关系

时间:2017-12-06 10:20:07

标签: java jpa entity-relationship

我正在尝试检索包含引用指定实体的关系的所有实体的列表。

“角色”实体:

@Entity
@Table(name="Role")
@Access(AccessType.PROPERTY)
public class Role implements Serializable {
    private String description;
    private Long roleId;

    @Column(name = "role_id")
    @Id
    public Long getRoleId() {}

    @Column(name = "description")
    public String getDescrition() {}
}

“用户”实体:

@Entity
@Table(name="users")
@Access(AccessType.PROPERTY)
public class User implements Serializable {
    private Long userId;
    private String name;
    private Role role;

    @Column(name = "user_id")
    @Id
    public Long getUserId() {}

    @ManyToOne()
    JoinColumn(name="role_id")
    public Role getRole() {}

    public String getName() {}
}

“群组”实体:

@Entity
@Table(name="groups")
@Access(AccessType.PROPERTY)
public class User implements Serializable {
    private Long groupId;
    private String description;
    private Role role;

    @Column(name = "group_id")
    @Id
    public Long getGroupId() {}

    @ManyToOne()
    JoinColumn(name="role_id")
    public Role getRole() {}

    public String getDescription() {}
}

我需要一个像这样的作品:

List<Class<?>> entities = getEntityReferences(Role.class);
foreach (Class<?> entity : entities )
    System.out.println(entity.getName());

输出结果为:

User
Group

我认为JPA使用类似这样的bean验证或级联机制,但我找不到一种简单的方法来实现它。

我现在找到的唯一方法是遍历所有实体的所有注释(由"entityManagerFactory.getMetamodel().getEntities()"返回)以查找关系(ManyToOneOneToOne等。)。这看起来有点单调乏味,我相信有更好的方法可以做到这一点......

谢谢大家...

0 个答案:

没有答案