@Entity
@Table(name="IG_USER")
public class IgUser implements Serializable {
private static final long serialVersionUID = 1L;
public IgUser() {
super();
// TODO Auto-generated constructor stub
}
@Id
@Column(name="IG_USER_ID", nullable=false)
private String igUserId;
@JsonManagedReference
@OneToMany(targetEntity=IgGroupUser.class,cascade= CascadeType.ALL, mappedBy="igUser", fetch=FetchType.LAZY)
private List<IgGroupUser> igGroupUsers;
}
IG_GROUP_USER - это другая таблица
@Entity
@Table(name = "IG_GROUP_USER")
public class IgGroupUser implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name="IG_GROUP_ID")
private String igGroupId;
@Column(name="USER_NAME")
private String userName;
@Column(name="USER_EMAIL")
private String userEmail;
@JsonBackReference
@ManyToOne
@JoinColumn(name = "IG_USER_ID")
private IgUser igUser;
@OneToOne(mappedBy="igGroupUser",cascade = CascadeType.ALL)
private Password password;
}
Класс DTO
@Data
public class TrusteesListDto {
private String userName;
private String userId;
private Integer userCount;
public TrusteesListDto( String userName, String userId) {
this.userName = userName;
this.userId = userId;
}
public TrusteesListDto() {
}
}
Репозиторий
public interface IwagUserRepository extends CrudRepository<IgUser, String> {
@Query("SELECT new com.vzw.roms.romsapp.dto.TrusteesListDto(igu.userName,iu.igUserId) " +
"FROM IgUser iu "+
"INNER JOIN iu.igGroupUsers igu")
List<TrusteesListDto> findByUserIdAndGroupId();
}
Приведенный выше код работает, но когда я пытаюсь добавить ниже запрос, его ошибка броска. Может кто-нибудь, пожалуйста, помогите мне в этом.
@Query("SELECT new com.vzw.roms.romsapp.dto.TrusteesListDto(igu.userName,iu.igUserId, iguc.cnt) " +
"FROM IgUser iu "+
"INNER JOIN iu.igGroupUsers igu," +
"(SELECT igu2.igUserId,count(*) cnt FROM iu.igGroupUsers igu2 " +
"WHERE igu2.igUserId != igu2.igGroupId group by igu2.igUserId) iguc")
Сообщение об ошибке: неожиданный токен: (рядом со строкой 1
После добавления вложенного выбора я получаю эту ошибку, Я что-то пропустил? I Я добавил этот счетчик и в класс DTO. Я пытался получить его как interger / long, так как пытался. Добавил также в конструктор, но он не работал.
private Integer userCount;
or
private Long userCount;