user732362
user732362

Reputation: 405

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

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?

Upvotes: 2

Views: 18430

Answers (1)

JB Nizet
JB Nizet

Reputation: 691865

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.

Upvotes: 10

Related Questions