我有一个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]
从输出中可以看到,即使多次尝试打印单个字段,我也会多次返回同一对象哈希码,因此它多次打印第一行。我数据库中的行数等于创建的相同对象的数。
答案 0 :(得分:0)
从您的实体中删除@Component
注释。