我正在创建一个Spring Boot应用程序,但是我的findAll(用JPARepository实现)返回除id外的每个属性,并且我需要为要创建的视图使用id。有什么办法可以改变吗?我目前有
/model/rol.java
@Entity
@Table(name = "roles")
public class rol {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(name = "rol", nullable = false)
private String rol;
@OneToMany(mappedBy = "rol", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private Set<Administrador> administradores;
public rol() {
}
public rol(String rol) {
this.rol = rol;
}
/* Getters and Setters */
/repository/rolrepository.java
@Repository
public interface rolrepository extends JpaRepository<rol, Long>{
}
/controller/rolcontroller.java
@Controller
public class rolcontroller {
@Autowired
private rolrepository rolRepository;
@GetMapping("/roles")
public String showAll(Model model) {
model.addAttribute("roles", rolRepository.findAll());
return "roles";
}
/templates/roles.html
<table class="table table-striped">
<thead class="thead-dark" >
<tr>
<th scope="col"> ID </th>
<th scope="col"> Rol </th>
</tr>
</thead>
<tbody>
<tr th:if="${roles.empty}">
<td colspan="2"> No hay roles registrados </td>
</tr>
<tr th:each="rol : ${roles}">
<td><span th:text="${rol.id}"> Rol </span></td>
<td><span th:text="${rol.rol}"> Rol </span></td>
</tr>
</tbody>
</table>
但是,出现错误Exception evaluating SpringEL expression: "rol.id"
经过研究,我发现JPARepository显然没有在findAll()
方法中包含模型的ID。
是否可以修改findAll()
或任何其他文件以能够使用HTML表中的ID?
预先感谢
期望的输出是我表中的rol.id值,但是实际结果是异常,评估SpringEL表达式:“ rol.id”
答案 0 :(得分:2)
@Repository
public interface rolrepository extends JpaRepository<rol, Long>{
}
JpaRepository arg
JpaRepository<rol, Long>
表明ID的类型为Long,但您在rol Java代码中使用的是int id
尝试在rol.java中使用Long ID
答案 1 :(得分:0)
首先,rol不是正确的类名。您应该开始练习命名约定。
第二件事,当您使用JPARespository / CrudRepository时,请确保您在POJO类中使用的id列与在存储库中使用的id列的数据类型相同。 请参考此。
@Repository
public interface rolrepository extends JpaRepository<Rol, Long>{
}