mysql - Spring Data JPA - 为类提供了错误类型的 id。应为 : class java. lang.Integer,得到类 java.lang.Long

标签 mysql spring-data-jpa

我在使用 Spring JPA 并尝试检索对象列表时遇到此问题。

这是我要检索的类

@Entity
@Table(name="OBJECTSTERMIC")
public class TermicObject {

    @Id
    @Column(name="TERMICID")
    private long termicId;

    @MapsId
    @OneToOne(fetch = FetchType.LAZY)
    @JoinColumn(name="OBJECTID",columnDefinition="INTEGER")
    private Object object;

    @Column(name="CONTECA_RIF")
    private int contecaRif;

    @Column(name="CONTECA_VAL")
    private int contecaVal;

    @Column(name="TYPE")
    private String type;

//getters and setters

Object 类在 MySQL 上将主键存储为 Integer,这确实是 Object

@Entity
public class Object {

    @Column(name="OBJECTID")
    @Id
    @JsonProperty("OBJECTID")
    private int objectId;
    ....

所以,没有地方设置 Long...

现在,我只需调用一个服务类

@Override
    public List<TermicObject> findAll() {

        return repository.findAll();
    }

并得到这个异常

org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.TypeMismatchException: Provided id of the wrong type for class it.besmart.db_eipo.persistence.model.Object. Expected: class java.lang.Integer, got class java.lang.Long; nested exception is java.lang.IllegalArgumentException: org.hibernate.TypeMismatchException: Provided id of the wrong type for class it.besmart.db_eipo.persistence.model.Object. Expected: class java.lang.Integer, got class java.lang.Long

在哪里设置Object Id应该是Long?

最佳答案

查看您的存储库的定义。它有正确的泛型类型吗?你有整数作为第二个参数吗?恕我直言,这可能是根本原因。查看建议的正确版本:

@RepositoryRestResource
public interface TermicObjectRepository extends JpaRepository<TermicObject, Integer> {
    public Optional<TermicObject> findById(Integer id);
    public List<TermicObject> findAll()
}

关于mysql - Spring Data JPA - 为类提供了错误类型的 id。应为 : class java. lang.Integer,得到类 java.lang.Long,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46960150/

相关文章:

php - 根据保管箱中发布的数据选择声明

php - 如何更好地编写这个 Mysql Join 查询

java - Spring Boot应用程序无法在 Controller 中找到定义的存储库

java - 无法在 Spring Boot 中使用自定义请求类中的存储库进行请求验证

mysql - Hibernate MYSQL字符异常

java - hibernate 3.0 中 Session.connection() 的 Close() 不起作用

php - 使用 DATE_SUB 卡住(对上周记录进行排序)

java - 在 Spring Data JPA 中使用注释连接两个以上的表

java - 动态创建 Spring Data Repositories

带 Date_Sub 的 MySQL 查询在查询时返回空集,但包含连接时计数 = 1