#java #spring #spring-boot #spring-data-jpa
#Ява #весна #пружинный ботинок #весна-данные-jpa
Вопрос:
Я пытался предоставить некоторые сервисы через интерфейс Spring JPARepository
, поэтому я создал StudentRepo, подобный этому:
package edu.university.management.dao; import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.rest.core.annotation.RestResource; import edu.university.management.model.Student; import edu.university.management.model.StudentsPerDepartment; public interface StudentRepository extends JpaRepositorylt;Student, Longgt; { @RestResource(path = "/byDeptOrdered") //@Query("select s from Student s where s.department.name = 'Informatique' order by s.entryDate desc") public Listlt;Studentgt; findByDepartment_NameOrderByEntryDateDesc(String deptName); @RestResource(path = "/topStudents") @Query("select s" " from Student s" " where s.mark = (" "select max(s.mark)" " from Student s" ")") public Listlt;Studentgt; topStudents(); @RestResource(path = "/studentsPerDept") @Query("select new edu.university.management.model.StudentsPerDepartment(d.name, count(s))" " from Department d" " left join" " d.students s" " group by d.name") public Listlt;StudentsPerDepartmentgt; studentCountPerDepartment(); }
За последнюю услугу studentCountPerDepartment
Я использовал класс на основе projection
, чтобы избежать возврата array
объектов,
Студенческая кафедра:
package edu.university.management.model; public class StudentsPerDepartment { private String departmentName; private Long studentCount; public StudentsPerDepartment(String departmentName, Long studentCount) { super(); this.departmentName = departmentName; this.studentCount = studentCount; } public String getDepartmentName() { return departmentName; } public Long getStudentCount() { return studentCount; } }
Но когда я вызываю службу, я получаю эту ошибку:
org.springframework.data.mapping.MappingException: Cannot get or create PersistentEntity for type edu.university.management.model.StudentsPerDepartment! PersistentEntities knows about 2 MappingContext instances and therefore cannot identify a single responsible one. Please configure the initialEntitySet through an entity scan using the base package in your configuration to pre initialize contexts.
Есть идеи, ребята?
Спасибо.
Комментарии:
1. Что у тебя в классе
Department
? Это нанесено на карту, верно? или попробуйте добавить attr в свой счетчик, как этоselect new edu.university.management.model.StudentsPerDepartment( d.name, count( s.{ANY_ATTR_TO_COUNT_FROM_DEPARTMENT} ) )
…. Или попробуйте добавить ссылку на пакет вDepartment
likefrom some.package.Department d
2. @DilermandoLima да, класс
Department
сопоставлен, и в нем есть только два поля {id
,name
}, и я также попытался заменить объект атрибутом в графе следующим образом:select new edu.university.management.model.StudentsPerDepartment(d.name, count(s.id))
но все равно не повезло