powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Ошибка при попытке вызвать em.persist
8 сообщений из 8, страница 1 из 1
Ошибка при попытке вызвать em.persist
    #34735318
termit31
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем доброго дня.
При попытке сохранить объект в БД вылетает крайне непонятная ошибка.
Имеется объект message с полями emp_id, local_user_id, message_date, message_header, message_id.
Одноименная таблица имеет все эти поля с идентичными названиями. При попытке вызвать

Код: plaintext
em.persist(message);

вылетает исключение

org.apache.openjpa.lib.jdbc.ReportingSQLException: ORA-00904: "LOCAL_USER_LOCAL_USER_ID": недопустимый идентификатор
{prepstmnt 42 INSERT INTO Message (emp_id, local_user_id, message_date, message_header, emp_emp_id, local_user_local_user_id) VALUES (?, ?, ?, ?, ?, ?) [params=(int) 8, (int) 0, (null) null, (String) , , 7, 9, 6., (null) null, (null) null]} [code=904, state=42000]

Откуда берутся "лишние" 2 поля (emp_emp_id, local_user_local_user_id)?? Я понял бы еще, если б на нарушение constraints ругалось, но тут попытка вставить что-то в несуществующие столбцы...
...
Рейтинг: 0 / 0
Ошибка при попытке вызвать em.persist
    #34735399
expp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
похоже у Message есть две many-to-one ассоциации emp_emp и local_user_local_user
...
Рейтинг: 0 / 0
Ошибка при попытке вызвать em.persist
    #34735447
termit31
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, есть. Только не emp_emp и local_user_local_user, а emp и local_user(а в ошибке именно local_user_local_user). Есть еще 2 one-to-many.
Чтоб не быть голословным...
Код: plaintext
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.
 package  entity_pack;

 import  javax.persistence.*;
 import  java.util.*;
 import  java.io.Serializable;

@Entity
 public   class  Message  implements  Serializable {
     private   int  message_id;
     private  String message_header;
     private   int  emp_id;
     private  Date message_date;
     private   int  local_user_id;

     private  List<Happened_event_list> happened_event_lists;
     private  List<Message_inclusion_list> message_inclusion_lists;
     private  Emp emp;
     private  Local_user local_user;

    @ManyToOne
     public  Local_user getLocal_user() {
         return  local_user;
    }

     public   void  setLocal_user(Local_user local_user) {
         this .local_user = local_user;
    }

    @OneToMany(mappedBy="message")
     public  List<Message_inclusion_list> getMessage_inclusion_lists() {
         return  message_inclusion_lists;
    }

     public   void  setMessage_inclusion_lists(List<Message_inclusion_list> message_inclusion_lists) {
         this .message_inclusion_lists = message_inclusion_lists;
    }



    @ManyToOne
     public  Emp getEmp() {
         return  emp;
    }

     public   void  setEmp(Emp emp) {
         this .emp = emp;
    }


    @OneToMany(mappedBy = "message")
     public  List<Happened_event_list> getHappened_event_lists() {
         return  happened_event_lists;
    }

     public   void  setHappened_event_lists(List<Happened_event_list> happened_event_lists) {
         this .happened_event_lists = happened_event_lists;
    }

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
     public   int  getMessage_id() {
         return  message_id;
    }

     public   void  setMessage_id( int  message_id) {
         this .message_id = message_id;
    }

     public  String getMessage_header() {
         return  message_header;
    }

     public   void  setMessage_header(String message_header) {
         this .message_header = message_header;
    }



     public   int  getEmp_id() {
         return  emp_id;
    }

     public   void  setEmp_id( int  emp_id) {
         this .emp_id = emp_id;
    }

     public  Date getMessage_date() {
         return  message_date;
    }

     public   void  setMessage_date(Date message_date) {
         this .message_date = message_date;
    }

     public   int  getLocal_user_id() {
         return  local_user_id;
    }

     public   void  setLocal_user_id( int  local_user_id) {
         this .local_user_id = local_user_id;
    }
Я тоже сначала об этом подумал, но смутила именно попытка вставить в столбцы что-то. И как можно обойти эту ошибку средствами явы? Можно конечно логику в pl\sql запихать, но так не интересно.
...
Рейтинг: 0 / 0
Ошибка при попытке вызвать em.persist
    #34735547
expp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну может создать столюцы которые он хочет?

или попросить сгенерить схему с ноля?
...
Рейтинг: 0 / 0
Ошибка при попытке вызвать em.persist
    #34735611
termit31
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторну может создать столбцы которые он хочет?
Можно конечно. Просто я лично думал, что эти отношения описывают foreign key в таблицах. Можно вообще это все убрать и сделать на триггерах (возможно это даже правильнее будет). Варианты обхода есть, но хочется лучше узнать спецификацию ejb, поскольку я нигде не видел в ресурсах дополнительных столбцов для many-to-one.

авторили попросить сгенерить схему с ноля? Что Вы тут имеете ввиду?
...
Рейтинг: 0 / 0
Ошибка при попытке вызвать em.persist
    #34735841
expp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
termit31
Можно конечно. Просто я лично думал, что эти отношения описывают foreign key в таблицах.
так. для того что бы сделать Message *--------1 LocalUser вам нужна колонка типа message.user_id

Вот это вот уберите
Код: plaintext
1.
 private   int  local_user_id;
 private   int  emp_id;

termit31
Можно вообще это все убрать и сделать на триггерах (возможно это даже правильнее будет).


авторЧто Вы тут имеете ввиду?
hibernate.hbm2ddl.auto=create
...
Рейтинг: 0 / 0
Ошибка при попытке вызвать em.persist
    #34735877
termit31
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВот это вот уберите

Код: plaintext
1.
 private   int  local_user_id;
 private   int  emp_id;


Убрал, вместе с соответствующими методами set\get. Не помогло, та же ошибка.

авторhibernate.hbm2ddl.auto=create
Это непонятно. Где такая опция есть? Я хибер нигде тут не использую, все на JPA. На weblogic все крутится.

Реализовал на триггерах - работает. Но вопрос остается :( Может понадобится именно так все делать...
...
Рейтинг: 0 / 0
Ошибка при попытке вызвать em.persist
    #34737486
expp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
покажи получившийся код и xmlки из META-INF
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Ошибка при попытке вызвать em.persist
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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