java.sql.SQLException:getInt()的值无效 - ' foo'

时间:2014-05-26 09:29:30

标签: hibernate jpa integer sqlexception many-to-one

我有这个错误“getInt()的无效值 - 'sirocodir'”,我在很多论坛都搜索过,但我的情况没有回复。

在我的数据库中,“Auteur_Id”类型是varchar(20)。

我的生活实体:

@Entity
@Table(name = "Factures")
public class Factures implements java.io.Serializable {

private Collaborateurs collaborateurs;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "Auteur_Id", nullable = false)
public Collaborateurs getCollaborateurs() {
    return this.collaborateurs;
}

public void setCollaborateurs(Collaborateurs collaborateurs) {
    this.collaborateurs = collaborateurs;
}

我的Collaborateurs实体:

@OneToMany(fetch = FetchType.LAZY, mappedBy = "collaborateurs")
public Set<Factures> getfactures() {
    return this.factures;
}

public void setfactures(Set<Factures> factures) {
    this.factures = factures;
}

我的服务:

@Transactional(readOnly=true)
public List<Factures> AllFacturesContratsClient() {

    return sessionFactory.getCurrentSession()
            .createQuery("from Factures").list();
}

记录tomcat:

Caused by: java.sql.SQLException: Invalid value for getInt() - 'sirocodir'
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
at com.mysql.jdbc.ResultSetImpl.getInt(ResultSetImpl.java:2725)
at com.mysql.jdbc.ResultSetImpl.getInt(ResultSetImpl.java:2813)
at org.apache.commons.dbcp.DelegatingResultSet.getInt(DelegatingResultSet.java:237)
at org.hibernate.type.IntegerType.get(IntegerType.java:51)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:186)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:175)
at org.hibernate.type.ManyToOneType.hydrate(ManyToOneType.java:158)
at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2267)
at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1443)
at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1371)
at org.hibernate.loader.Loader.getRow(Loader.java:1271)
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:619)
at org.hibernate.loader.Loader.doQuery(Loader.java:745)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:270)
at org.hibernate.loader.Loader.doList(Loader.java:2449)
... 126 more

3 个答案:

答案 0 :(得分:21)

课程Collaborateurs中是否有任何枚举类型? 如果有,请务必使用@Enumerated(EnumType.STRING)

答案 1 :(得分:0)

我在进行架构更改后得到了这个。可能迁移工作不正常。放下桌子并重新生成后,错误就消失了。

答案 2 :(得分:0)

由于实体之间的映射不正确,也会发生此异常。在我们的例子中,我们在两个实体之间的关系映射错误我们通过纠正实体之间的关系来解决这个问题。