Hy all, 我想知道使用Spring Data Jpa我的custum查询有什么问题。 如果我使用
UtilisateurRepositorie.findAll()
,它工作正常
我的存储库:
@Repository
public interface UtilisateurRepositorie extends JpaRepository <Utilisateur, Long> {
@Query ("select u.idUtilisateur, u.login, u.mail, u.nom, u.prenom,u.poste.nomposte, u.idChantier.nomChantier from Utilisateur u ")
List<Utilisateur> selectAllUser();
}
在我的控制器中
@Autowired
private UtilisateurRepositorie utilisateurRepositorie;
@GetMapping("/userlist")
public String listerUtilisateur(@RequestParam (name = "page", defaultValue = "0") int page , Model model) {
List<Utilisateur> lstUser= utilisateurRepositorie.selectAllUser();
model.addAttribute("listeusers", lstUser);
return "utilisateur";
}
我使用百里香为我的观点:
<div>
<table class="table table-responsive table-bordered">
<thead>
<tr>
<th data-breakpoints="xs">Login</th>
<th>Nom</th>
<th>Prenom</th>
<th data-breakpoints="xs">mail</th>
<th data-breakpoints="xs">Poste</th>
<th data-breakpoints="xs">Chantier</th>
</tr>
</thead>
<tbody>
<tr th:each="listeuser:${listeusers}">
<td th:text="${listeuser.getLogin()}"></td>
<td th:text="${listeuser.nom}"></td>
<td th:text="${listeuser.prenom}"></td>
<td th:text="${listeuser.mail}"></td>
<td th:text="${listeuser.poste.nomposte}"></td>
<td th:text="${listeuser.idChantier.nomChantier}"></td>
</tr>
</tbody>
</table>
</div>
编译后,我收到以下错误:
org.springframework.expression.spel.SpelEvaluationException: EL1004E: Method call: Method getLogin() cannot be found on java.lang.Object[] type
at org.springframework.expression.spel.ast.MethodReference.findAccessorForMethod(MethodReference.java:211) ~[spring-expression-4.3.6.RELEASE.jar:4.3.6.RELEASE]...
谢谢,
答案 0 :(得分:2)
那是因为您正在尝试将List<Utilisateur>
投射到@Query ("select u.idUtilisateur, u.login, u.mail, u.nom, u.prenom,u.poste.nomposte, u.idChantier.nomChantier from Utilisateur u ")
List<Utilisateur> selectAllUser();
。
执行此类查询时
List<Object[]>
它会返回select u from Utilisateur u
,因为您选择了多个字段。
如果您想要返回List<Utilisateur>
,则应将查询重写为Object[]
。
否则,您需要逐个元素地解析<span *ngIf = "input1?.required">*</span>
。
答案 1 :(得分:0)
由于您希望返回List<Utilisateur>
更新查询的select子句,只需u
。无需单独选择字段
更新
@Query ("select u.idUtilisateur, u.login, u.mail, u.nom, u.prenom,u.poste.nomposte, u.idChantier.nomChantier from Utilisateur u ")
到
@Query ("select u from Utilisateur u ")