dataaccess error--> getInt not implemented for class oracle.jdbc.driver.T4CDateAccessor

15,813

You declared two dates as Integer properties:

private Integer scheduledStartDate;
private Integer scheduledFinishDate;

These fields are probably stored in a column of type Date in database, and the database driver doesn't know how to convert a date to an integer.

Share:
15,813
user732362
Author by

user732362

Updated on July 25, 2022

Comments

  • user732362
    user732362 almost 2 years

    I have recently setup a spring + hibernate project. I am using oracle DB. I have a entity as shown in the code.

    @Entity
    @Table(name = "P_EMP_STATUS")
    public class EmployeeStatus extends AbstractEntity<Integer> implements Serializable{
    
    private static final long serialVersionUID = 5451825528280340412L;
    
    private Integer id;
    private Region region;
    private Project project;
    private TaskType taskName;
    private String taskType
    private PrinceUser princeUser;
    private Integer assignee;
    private Date actualStartDate;
    private Date actualFinishDate;
    private Integer scheduledStartDate;
    private Integer scheduledFinishDate;
    private Integer effortSpent;
    private String empComments;
    private String mgrcomments;
    private String archive;
    
    @Id
    @Column(name = "ID")
    @GeneratedValue(generator="P_STATUS_SEQ", strategy=GenerationType.AUTO)
    @SequenceGenerator(name="P_STATUS_SEQ", sequenceName="P_STATUS_SEQ", allocationSize=1)
    public Integer getId() {
        return id;
    }
    
    public void setId(Integer id) {
        this.id = id;
    }
    
    @ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name = "REGION_ID")
    public Region getRegion() {
        return region;
    }
    
    public void setRegion(Region region) {
        this.region = region;
    }
    
    @ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name = "PROJECT_ID")
    public Project getProject() {
        return project;
    }
    
    public void setProject(Project project) {
        this.project = project;
    }
    
    @ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name = "TASK_ID")
    public TaskType getTaskName() {
        return taskName;
    }
    
    public void setTaskName(TaskType taskName) {
        this.taskName = taskName;
    }
    
    @Column(name = "TASK_TYPE")
    public String getTaskType() {
        return taskType;
    }
    
    public void setTaskType(String taskType) {
        this.taskType = taskType;
    }
    
    @ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name = "ASSIGNEE")
    public PrinceUser getPrinceUser() {
        return princeUser;
    }
    
    public void setPrinceUser(PrinceUser princeUser) {
        this.princeUser = princeUser;
    }
    
    @Column(name = "ACT_START")
    public Date getActualStartDate() {
        return actualStartDate;
    }
    
    public void setActualStartDate(Date actualStartDate) {
        this.actualStartDate = actualStartDate;
    }
    
    @Column(name = "ACT_FINISH")
    public Date getActualFinishDate() {
        return actualFinishDate;
    }
    
    public void setActualFinishDate(Date actualFinishDate) {
        this.actualFinishDate = actualFinishDate;
    }
    
    @Column(name = "SCH_START")
    public Integer getScheduledStartDate() {
        return scheduledStartDate;
    }
    
    public void setScheduledStartDate(Integer scheduledStartDate) {
        this.scheduledStartDate = scheduledStartDate;
    }
    
    @Column(name = "SCH_FINISH")
    public Integer getScheduledFinishDate() {
        return scheduledFinishDate;
    }
    
    public void setScheduledFinishDate(Integer scheduledFinishDate) {
        this.scheduledFinishDate = scheduledFinishDate;
    }
    
    @Column(name = "EFFORT_SPENT")
    public Integer getEffortSpent() {
        return effortSpent;
    }
    
    public void setEffortSpent(Integer effortSpent) {
        this.effortSpent = effortSpent;
    }
    
    @Column(name = "EMP_COMMENTS")
    public String getEmpComments() {
        return empComments;
    }
    
    public void setEmpComments(String empComments) {
        this.empComments = empComments;
    }
    
    @Column(name = "MGR_COMMENTS")
    public String getMgrcomments() {
        return mgrcomments;
    }
    
    public void setMgrcomments(String mgrcomments) {
        this.mgrcomments = mgrcomments;
    }
    
    @Column(name = "ARCHIVE")
    public String getArchive() {
        return archive;
    }
    
    public void setArchive(String archive) {
        this.archive = archive;
    }
    

    When i try to get data from DB using

    Query query =  em.createQuery("FROM EmployeeStatus");
    return query.getResultList();
    

    I get the following error.

    java.sql.SQLException: Invalid column type: getInt not implemented for class oracle.jdbc.driver.T4CDateAccessor
    oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
    oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
    oracle.jdbc.driver.Accessor.unimpl(Accessor.java:358)
    

    I have checked the mappings, everything seems alright. Can someone please help me?

  • user732362
    user732362 over 12 years
    Thanks a lot! that was indeed the mistake.