Методы Spring JpaRepository findAll (), возвращающие одну и ту же строку несколько раз - PullRequest
0 голосов
/ 31 марта 2019

У меня есть quizRepository, в котором хранятся все тесты, созданные в моем приложении. Я создал хранилище класса QuizDetails и вызываю встроенный findAll() метод JpaRepository.

Но я получаю один и тот же объект, возвращаемый несколько раз в виде списка. Список содержит то же количество объектов, что и в строках таблицы. Но в JPA все объекты одинаковы.

Модель класса:

@Getter
@Setter
@Entity
@Component
@Scope("prototype")
public class QuizDetails {
    @Id
    @Column(name="quiz_id")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    @Embedded
    private FormattedQuizBean questions;

    @ManyToOne
    private LoginAttribute quizMaster;

}

Интерфейс репозитория:

@Repository
public interface QuizDetailRepository extends JpaRepository<QuizDetails, Long>{
}

Класс контроллера:

@GetMapping("/master/all-quiz")
    public String listQuizzesByMaster(ModelMap model, Principal principal){
        List<QuizDetails> quizDetails= quizDetailRepository.findAll();
        log.debug("Quizzes: "+quizDetails.toString());

        return "master/allquiz";
    }

Выход:

Quizzes: [com.DevSting.QuizPortal.Model.QuizDetails@19ffa0f0, com.DevSting.QuizPortal.Model.QuizDetails@19ffa0f0, com.DevSting.QuizPortal.Model.QuizDetails@19ffa0f0, com.DevSting.QuizPortal.Model.QuizDetails@19ffa0f0]

Как видно из вывода, я получаю один и тот же хэш-код объекта, возвращаемый несколько раз, даже когда я пытаюсь напечатать отдельное поле, он печатает первую строку несколько раз. Количество строк в моей базе данных равно количеству созданных одинаковых объектов.

Database has 4 different rows

1 Ответ

0 голосов
/ 31 марта 2019

Удалите аннотацию @Component из вашей сущности.

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