类oracle.jdbc.driver.t4CRowidAccessor hibernate

时间:2015-07-10 05:39:38

标签: java spring oracle hibernate jdbc

我正在使用它 http://howtodoinjava.com/2013/03/21/spring-3-and-hibernate-integration-tutorial-with-example/

创建Spring + Hibernate App的教程。但是我在插入数据时遇到了这个异常。我正在使用Oracle。

Could not insert : howtodoinjava.entity.EmployeeEntity

invalid column type getInt not implemented for class oracle.jdbc.driver.t4CRowidAccessor

我在使用getInt程序的哪个地方?

EmployeeDaoImpl.java

package com.howtodoinjava.dao;

import java.util.List;

import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import com.howtodoinjava.entity.EmployeeEntity;

@Repository
public class EmployeeDaoImpl implements EmployeeDAO
{
    @Autowired
    private SessionFactory sessionFactory;
    @Override
    public void addEmployee(EmployeeEntity employee) {
        this.sessionFactory.getCurrentSession().save(employee);
    }
    @SuppressWarnings("unchecked")
    @Override
    public List<EmployeeEntity> getAllEmployees() {
        return this.sessionFactory.getCurrentSession().createQuery("from EmployeeEntity").list();
    }
    @Override
    public void deleteEmployee(Integer employeeId) {
        EmployeeEntity employee = (EmployeeEntity) sessionFactory.getCurrentSession().load(
                EmployeeEntity.class, employeeId);
        if (null != employee) {
            this.sessionFactory.getCurrentSession().delete(employee);
        }
    }
}

EmployeeEntity.java

package com.howtodoinjava.entity;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="EMPLOYEE")
public class EmployeeEntity 
{
    @Id
    @Column(name="ID")
    @GeneratedValue
    private Integer id;
    @Column(name="FIRSTNAME")
    private String firstname;
    @Column(name="LASTNAME")
    private String lastname;
    @Column(name="EMAIL")
    private String email;
    @Column(name="TELEPHONE")
    private String telephone;

public void setid(int id)
{
  this.id = id;
}
public int getid()
{
  return id;
}

public void setfirstname(String firstname)
{
  this.firstname = firstname;
}
public String getfirstname()
{
  return firstname;
}

public void setlastname(String lastname)
{
  this.lastname = lastname;
}
public String getlastname()
{
  return lastname;
}

public void setemail(String email)
{
  this.email = email;
}
public String getemail()
{
  return email;
}
public void settelephone(String telephone)
{
  this.telephone = telephone;
}
public String gettelephone()
{
  return telephone;
}

}

2 个答案:

答案 0 :(得分:0)

您也可以参考本教程

http://www.ekiras.com/2015/02/maven-spring-mvc-hibernate-sitemesh-hello-world-project.html

我认为你可能缺少的是该类的getter和setter,因此它无法设置类变量的值。

答案 1 :(得分:0)

有两种方法可以解决它。

整数替换为EmployeeEntity.java中的 int

或通过更改EmployeeEntity.java中的生成注释

@Id 
@Column(name="ID", unique = true, nullable = false) 
@**GeneratedValue(strategy=GenerationType.SEQUENCE)**