【发布时间】: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