Здравствуйте!
Есть заполненная вручную таблица employee_history, редактирование и удаление записей таблицы проходит нормально. Но при добавлении новой записи возникает ошибка:
java.sql.SQLSyntaxErrorException: ORA-02289: последовательность не существует
Сама таблица определяется следующим классом:
Код:
package com.summwork.domain;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import com.google.gwt.user.client.rpc.IsSerializable;
import com.summwork.client.dto.EmployeeHistoryDTO;
/**
*персистентный класс для таблицы,
*хранящей истории о сотрудниках
*/
@Entity
@Table(name="employee_history")
public class EmployeeHistory implements IsSerializable{
public EmployeeHistory(){}
public EmployeeHistory(EmployeeHistoryDTO dto)
{
this.id = dto.getId();
this.post=new Post(dto.getPost());
this.person=new Person(dto.getPerson());
this.division=new Division(dto.getDivision());
this.startDate=dto.getStartDate();
this.endDate=dto.getEndDate();
}
@Id
@GeneratedValue//(strategy=GenerationType.SEQUENCE)
@Column(name="emp_history_id")
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@ManyToOne
@JoinColumn(name="person_id")
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
@Column(name="start_date")
@Temporal(value=TemporalType.DATE)
public Date getStartDate() {
return startDate;
}
public void setStartDate(Date startDate) {
this.startDate = startDate;
}
@Column(name="end_date")
@Temporal(value=TemporalType.DATE)
public Date getEndDate() {
return endDate;
}
public void setEndDate(Date endDate) {
this.endDate = endDate;
}
@ManyToOne
@JoinColumn(name="post_id")
public Post getPost() {
return post;
}
public void setPost(Post post) {
this.post = post;
}
@ManyToOne
@JoinColumn(name="div_id")
public Division getDivision() {
return division;
}
public void setDivision(Division division) {
this.division = division;
}
@SuppressWarnings("deprecation")
public String printStartDate()
{
return (this.getStartDate()==null)?"null":
this.getStartDate().getDay()+"/"+this.getStartDate().getMonth()+"/"+this.getStartDate().getYear();
}
@SuppressWarnings("deprecation")
public String printEndDate()
{
return (this.getEndDate()==null)?"null":
this.getEndDate().getDay()+"/"+this.getEndDate().getMonth()+"/"+this.getEndDate().getYear();
}
@Override
public String toString() {
return "EmpHisory(hist_id="+this.getId()+";"+this.getPerson()+
";"+this.getPost()+";"+this.getDivision()+
";start_date="+this.printStartDate()+";end_date="+this.printEndDate()+")";
}
private int id;//идентификатор истории
private Person person;//сотрудник
private Post post;//должность
private Division division;//подразделение
Date startDate,//начало истории
endDate;//конец истории
}
Ошибка возникает в следующем методе:
Код:
@Override
public void addEmpHist(EmployeeHistoryDTO dto)
{
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
EmployeeHistory eh=new EmployeeHistory();
eh.setDivision((Division)session.load(Division.class, dto.getDivision().getId()));//createDiv(dhDTO.getDivision()));
eh.setPost((Post)session.load(Post.class, dto.getPost().getId()));
eh.setPerson((Person)session.load(Person.class, dto.getPerson().getId()));
eh.setEndDate(dto.getEndDate());
eh.setStartDate(dto.getStartDate());
session.save(eh);
session.getTransaction().commit();
if(session != null && session.isOpen())
{
session.close();
}
}
Данные этой таблицы введены вручную, при попытке добавить запись программно этим методом к имеющимся записям, возникает ошибка.
В чём может быть причина ошибки?
Есть ли какой-либо способ избавиться от неё?