2015-07-10 2 views
0

Я использую этот http://howtodoinjava.com/2013/03/21/spring-3-and-hibernate-integration-tutorial-with-example/неверного типа столбца GetInt не реализован для класса oracle.jdbc.driver.t4CRowidAccessor зимует

учебник для создания Spring + Hibernate App.But Я получаю это исключение при вставке данных. Я использую 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; 
} 

} 
+0

Почтового индекс вашего лица и дао –

+0

Пожалуйста, пост StackTrace , Похоже, что это падающий фол драйвера Oracle JDBC, возвращающего ROW_ID из 'getGeneratedKeys', а не сгенерированного id. –

ответ

0

вы можете в качестве альтернативы, обратитесь к этой обучающей

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

Что я думаю, что вы, возможно, отсутствует является добытчиками и сеттеры для класса, благодаря чему он не сможет установить значения для переменных класса.

+0

Я также добавил геттеры и сеттеры. –

+0

Спящий режим принимает идентификатор как длинный тип данных, а не целочисленный тип. Пожалуйста, попробуйте сделать это как долго. –

+0

Я использовал 'private Long id', Error' недопустимый тип столбца getLong не был реализован для класса oracle.jdbc.driver.t4CRowidAccessor' –

0

Существует два способа решения проблемы.

заменить Integer с Int в вашем EmployeeEntity.java

или путем изменения генерируемой аннотации, как показано ниже в EmployeeEntity.java

@Id 
@Column(name="ID", unique = true, nullable = false) 
@**GeneratedValue(strategy=GenerationType.SEQUENCE)** 
Смежные вопросы