【问题标题】:Spring JpaRepository findAll() methods returning same row multiple timesSpring JpaRepository findAll() 方法多次返回同一行
【发布时间】:2019-08-21 23:01:11
【问题描述】:

我有一个quizRepository,它存储了在我的应用程序上创建的所有测验。 我创建了一个QuizDetails 类的存储库,并调用了JpaRepository 的inbuild findAll() 方法。

但是我将同一个对象作为列表多次返回。该列表包含与表中的行相同数量的对象。但是在 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]

从输出中可以看出,我多次返回相同的对象哈希码,即使我尝试打印单个字段,它也会多次打印第一行。我的数据库中的行数等于创建的相同对象的数量。

【问题讨论】:

    标签: spring hibernate spring-boot spring-data-jpa


    【解决方案1】:

    从您的实体中删除 @Component 注释。

    【讨论】:

      猜你喜欢
      • 2021-05-20
      • 2016-10-12
      • 2017-08-25
      • 1970-01-01
      • 2020-04-16
      • 1970-01-01
      • 2021-06-06
      • 1970-01-01
      • 2023-03-08
      相关资源
      最近更新 更多