Hibernate Выбор одной таблицы из объединения таблиц - PullRequest
0 голосов
/ 09 мая 2019

Привет, у меня есть 2 таблицы в отношениях многие ко многим:

Пользователь:

Entity
@Table(name = "user_user")
@Where(clause = "is_delete <> 'Y'")
public class User extends CommonColumn {
    @Id
    @GeneratedValue(strategy= GenerationType.AUTO)
    @Getter @Setter
    private long id;

    @Column(name="fullname")
    @Getter @Setter
    private String fullName;    

    @Type(type = "yes_no")
    @Column(name="is_active")
    @SortableField
    @Field(termVector = TermVector.YES)
    @Getter @Setter
    private boolean isActive;

    @Type(type = "yes_no")
    @Column(name="is_delete")
    @Getter @Setter
    private boolean isDeleted;

    @ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    @JoinTable(name = UserConstants.REFERENCE_GROUP_USER,
    joinColumns = {@JoinColumn(name = "user_id")},
    inverseJoinColumns = {@JoinColumn(name = "user_group_id")}
    )
    @JsonBackReference
    @Getter @Setter
    List<Group> groups = new ArrayList<Group>();

И группа пользователей:

@Entity
@Table(name="user_group")
public class Group extends CommonColumn {

    @Id
    @GeneratedValue(strategy= GenerationType.AUTO)
    @Getter @Setter
    private Long id;

    @Column(name="group_name")
    @Getter @Setter
    private String groupName;

    @Type(type = "yes_no")
    @Column(name="is_active")
    @Getter @Setter
    private boolean isActive;

    @Type(type = "yes_no")
    @Column(name="is_deleted")
    @Getter @Setter
    private boolean isDeleted;

    @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    @JoinTable(name = UserConstants.REFERENCE_GROUP_USER,
    joinColumns = {@JoinColumn(name = "user_group_id")},
    inverseJoinColumns = {@JoinColumn(name = "user_id")}
    )
    @JsonBackReference
    @Getter @Setter
    List<User> users = new ArrayList<User>();
}

И я хотел бы выбрать только те группы пользователей, у которых есть пользователи с is_active = true. Я пробовал:

@Query(value = "SELECT ug from User u INNER JOIN user_group_user ugu ON u.id = ugu.user_id\r\n" + 
            "INNER JOIN user_group ug ON ugu.user_group_id = ug.id WHERE u.is_active = 'Y' GROUP BY\r\n" + 
            "ug.group_name ORDER BY ug.group_name ASC", nativeQuery = true)
    List<Group> findLinkedUserGroups();

Но я получаю сообщение об ошибке «Неизвестный столбец« ug »в« списке полей »»

Пожалуйста, помогите. Большое спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...