У меня есть таблица tbl_rating, я пытаюсь получить среднюю оценку пользователей, которые существуют в этой таблице.Это моя таблица.
CREATE TABLE `tbl_user` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(100) DEFAULT NULL,
`email` varchar(255) NOT NULL,
`contact` varchar(255) NOT NULL,
`status` enum('active','inactive') NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`),
UNIQUE KEY `contact` (`contact`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latin1
Это таблица tbl_rating
CREATE TABLE `tbl_rating` (
`id` bigint(255) NOT NULL AUTO_INCREMENT,
`user_id` bigint(20) NOT NULL,
`point` int(1) NOT NULL,
`status` enum('active','inactive') NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1
Это запрос, который я пытаюсь реализовать из хранилища.
SELECT r.user_id, u.name, AVG(r.point) AS average
FROM tbl_rating r LEFT JOIN tbl_user u ON u.id=r.user_id
GROUP BY r.user_id;
это мой контроллер
@RequestMapping(value = "/user/rating/avg/individual", method = RequestMethod.POST)
public JsonNode getAvgRatingOfIndividual(HttpServletRequest httpServletRequest) throws IOException {
JSONArray response = new JSONArray();
List<Rating> ratings = new ArrayList<>();
try {
ratings = ratingService.getAvgRatingOfIndividual();
if (ratings.size() > 0) {
} else {
response = new JSONArray();
}
} catch (Exception e) {
return objectMapper.readTree(utility.createResponse(500, KeyWord.ERROR, e.toString()).toString());
}
return objectMapper.readTree(response.toString());
}
ниже приведены сервис и репозиторий, в котором я застрял сервис
public List<Rating> getAvgRatingOfIndividual() {
return ratingRepository.??
}
репозиторий
@Repository
public interface RatingRepository extends JpaRepository<Rating, Long> {
}
рейтинг модели
@Entity
@Table(name = "tbl_rating")
public class Rating {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
long id;
@ManyToOne
@JoinColumn(name = "user_id")
User user;
@Column(name = "point")
int point;
@Column(name = "status")
String status;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public int getPoint() {
return point;
}
public void setPoint(int point) {
this.point = point;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
}
модель пользователя
@Entity
@Table(name = "tbl_user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
long id;
@Column(name = "name")
String name;
@Column(name = "email")
String email;
@Column(name = "contact")
String contact;
@Column(name = "status")
String status;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getContact() {
return contact;
}
public void setContact(String contact) {
this.contact = contact;
}
}
была бы признательна, если бы я мог получить какую-либо помощь по написанию этого собственного запроса в весеннем загрузочном репозитории