Spring Framework JpaRepository通过findAll()方法返回第一个表行的重复项

时间:2016-06-12 11:39:41

标签: mysql spring hibernate spring-mvc spring-data

这是我的 JpaRepository

public interface ProcessorRepository extends JpaRepository<Processor, Integer> {
}

控制器

...
@Autowired
ProcessorRepository processorRepository;

@RequestMapping("/getAll")
public String showAllProcessors(Map map){

    List<Processor> processorList = processorRepository.findAll();

    map.put("processors", processorList);
    return "main";
}

main.jsp中

....
<select>
<option selected="selected">Choose Processor</option>
<c:forEach var="proc" items="${processors}">
    <option>
            ${proc.processorName}
    </option>
</c:forEach>
</select>

这就是处理器mysql表的样子:

Processor table

但这就是我得到的

enter image description here

为什么它会返回第一行的重复项,而不是所有不同的行?

2 个答案:

答案 0 :(得分:1)

原来问题出在我的处理器实体中。它有@Column(name =&#34; id&#34;)而不是@Column(name =&#34; processor_id&#34;)。

答案 1 :(得分:0)

您可以在custom method中创建repository以返回Distinct

List<Processor> findDistinctProcessorsByprocessorName();

在上面的方法中processorName将被视为找到重复项的权利,如果您愿意,可以更改它。