2017-10-26 9 views
0

Spring JPAを使用してオブジェクトのリストを取得しようとしているときに、この問題に直面しています。SpringData JPA - クラスのIDが間違っています。予想されるクラス:java.lang.Integer、クラスjava.lang.Longを取得

これは私が

@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の主キーを持っている、確かにこれはどこにもされているので、

@Entity 
public class Object { 

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

オブジェクトであります長い時間を設定してください...

ここで、私は単にサービスクラスを呼び出します

@Override 
    public List<TermicObject> findAll() { 

     return repository.findAll(); 
    } 

とロングである必要があり、そのオブジェクトIDが設定される。この例外

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 

を得ましたか。

答えて

0

完全にわからないが、私はこのマッピング

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

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

ObjectのIDが長いtermicIdの値と一致しますね。

関連する問題