0

在我的 Spring-Hibernate 应用程序中,我有 4 个 bean 类,如 UserVO、BookVO、AttandanceVO 和 Timetable。

和我的 AttendanceVO 豆类:

@ManyToOne
@JoinColumn(name="BOOK_ID")
private BookVO book;
 //Setters and getters.

和我的 BookVO 豆类:

@ManyToOne
@JoinColumn(name = "USER_ID")
private UserVO user;
@ManyToOne
@JoinColumn(name = "Time_ID")
private TimeTable timetable;

//Setters and getters

在我的 Hibernate 类中,我正在编写查询..

 @Transactional
public List<AttendanceVO> findAttendanceList(UserVO user){
    TypedQuery<AttendanceVO> query = entityManager.createQuery("select av from AttendanceVO av inner join av.book bb  where bb.user=:user",
            AttendanceVO.class);
    query.setParameter("user", user);
    return query.getResultList();
 }

但我得到了例外,比如..

 SEVERE: Servlet.service() for servlet [spring] in context with path [/EClass] threw exception [Request processing failed; nested exception is javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: could not load an entity: [com.sits.ec.valueObjects.BookVO#A2]] with root cause
java.sql.SQLException: Invalid value for getInt() - 'T2'
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
 ..............

实际上 T2 是时间表 ID,为什么 T2 会听到我的查询中没有包含时间表..

他们需要任何映射吗?

Edit 1:


 @Entity
@Table(name = "BOOK")
public class BookVO{

    @ManyToOne
    @JoinColumn(name = "USER_ID")
    private UserVO user;

    @ManyToOne
    @JoinColumn(name = "TIMETABLE_ID")
    private TimetableVO timetable;
//Setters and getters
}
4

2 回答 2

0

我的猜测是数据库中有一些空值。当休眠尝试使用类整数字段进行映射时,它会抛出此异常。这就是发生在我身上的事情。我在下面使用 select caluse 来明确处理空值

   ISNULL("column having null value", 0)
于 2013-06-18T10:27:05.330 回答
0

我认为您不能将 UserVO 映射到 DB 原始类型,您应该检查 USER_ID 列的数据类型,并将该类型映射到您的代码。尝试将类型从休眠精确映射到您的数据库。

于 2013-06-18T10:28:38.090 回答