使用findAll()方法时,Spring Boot JPARepository不显示ID

时间:2019-05-06 05:41:47

标签: spring-boot jpa

我正在创建一个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”

2 个答案:

答案 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>{
}