Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate ORA-02289: последовательность не существует. Ошибка при добавлении записи / 3 сообщений из 3, страница 1 из 1
06.09.2012, 22:34:55
    #37947452
faceless
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate ORA-02289: последовательность не существует. Ошибка при добавлении записи
Здравствуйте!
Есть заполненная вручную таблица employee_history, редактирование и удаление записей таблицы проходит нормально. Но при добавлении новой записи возникает ошибка:
java.sql.SQLSyntaxErrorException: ORA-02289: последовательность не существует

Сама таблица определяется следующим классом:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
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;//конец истории
}



Ошибка возникает в следующем методе:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
@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();
             }
}


Данные этой таблицы введены вручную, при попытке ввести программно, этим методом, возникает ошибка.

В чём может быть причина ошибки? Есть ли какой-либо способ избавиться от неё?
...
Рейтинг: 0 / 0
07.09.2012, 00:07:42
    #37947539
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate ORA-02289: последовательность не существует. Ошибка при добавлении записи
Причина в @GeneratedValue. Почему име sequence закоментировано?
...
Рейтинг: 0 / 0
07.09.2012, 02:35:42
    #37947594
Лагман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate ORA-02289: последовательность не существует. Ошибка при добавлении записи
По умолчанию в таком случае hibernate перед вставкой вызывает счетчик последовательности hibernate_sequence, которой видимо нет.
Погуглите как описывать генерируемые поля.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate ORA-02289: последовательность не существует. Ошибка при добавлении записи / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]