dataaccess错误 - >没有为类oracle.jdbc.driver.T4CDateAccessor实现getInt

时间:2012-01-22 15:42:51

标签: java oracle hibernate jpa jdbc

我最近设置了一个spring + hibernate项目。我正在使用oracle DB。我有一个代码中显示的实体。

@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;
}

当我尝试使用

从数据库获取数据时
Query query =  em.createQuery("FROM EmployeeStatus");
return query.getResultList();

我收到以下错误。

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)

我检查了映射,一切似乎都没问题。有人可以帮助我吗?

1 个答案:

答案 0 :(得分:9)

您将两个日期声明为整数属性:

private Integer scheduledStartDate;
private Integer scheduledFinishDate;

这些字段可能存储在数据库中Date类型的列中,而数据库驱动程序不知道如何将日期转换为整数。