powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate : объединение delete clause
25 сообщений из 67, страница 2 из 3
Hibernate : объединение delete clause
    #37702979
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanov-void,
ORA - неверное имя колонки
http://yandex.ru/yandsearch?clid=40031&yasoft=punto&text=ORA-00904&lr=213
- упрощайте запрос или схему пока не найдёте
- лог создания таблиц и запроса
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37703026
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanov-void,
есть подозрение, что в базе то имя колонки не большими буквами. Старайтесь наименования в базе только маленькими буквами писать, т.е. @Column(name = "org_id")
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37703060
vas0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanov-void,

Думаю здесь у тебя уже ошибка в самом запросе. "E.cargoGroup = :id2" возможно здесь ты сравниваешь id-шник с сущностью. Попробуй так "WHERE E.id = :id1 AND E.cargoGroup.id = :id2"
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37703450
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123, согласен, как раз вот и не верное, но почему не верное- не ясно, хотя в исключении уже содержится некоторая подсказка.

Озверин, хорошо, возьмем на заметку. В базе все в верхнем регистре.

vas0, я тоже так думаю, однако уже в том запросе, по которому expandParameterLists из AbstractQueryImpl прошелся -
странно, почему айдишник берется из GBCAPACITYENTITY, а не из GBLOADFORE0_ :
GBLOADFORE0_"."GBCAPACITYENTITY_ORG_ID": ???????????? ?????????????
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37703454
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. вот это вот составное имя меня не радует - GBLOADFORE0_"."GBCAPACITYENTITY_ORG_ID
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37704113
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В дочерней сущности замапил связь через JoinTable -

Код: java
1.
2.
3.
4.
5.
6.
...
	@ManyToOne(cascade = {CascadeType.REFRESH}, fetch = FetchType.LAZY)
	@JoinTable(name="MARKSIST.GB_CAPACITY",joinColumns={@JoinColumn(name="ORG_ID")})
	private GbCapacityEntity gbCapacityEntity;

...



Запрос -

Код: java
1.
2.
3.
4.
5.
...
	    String hql = "FROM com.intellex.marksist.hbn.model.GbLoadForecast G " +
		 			 "WHERE G.orgId = :id1 AND G.cargoGroup = :id2";

...



Принял вид -

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
...
     [java] Hibernate: 
     [java]     select
     [java]         gbloadfore0_.ORG_ID as ORG1_4_,
     [java]         gbloadfore0_.GRUP_GRUZ as GRUP2_4_,
     [java]         gbloadfore0_.CHANGER_ID as CHANGER3_4_,
     [java]         gbloadfore0_.FST_2012 as FST4_4_,
     [java]         gbloadfore0_.FST_2013 as FST5_4_,
     [java]         gbloadfore0_.FST_2014 as FST6_4_,
     [java]         gbloadfore0_.FST_2015 as FST7_4_,
     [java]         gbloadfore0_.RW_ID as RW8_4_,
     [java]         gbloadfore0_.SENDER_ID as SENDER9_4_,
     [java]         gbloadfore0_.ST_ID as ST10_4_,
     [java]         gbloadfore0_1_.gbCapacityEntity_ORG_ID as gbCapac10_3_ 
     [java]     from
     [java]         MARKSIST.GB_LOAD_FORECAST gbloadfore0_,
     [java]         MARKSIST.GB_CAPACITY gbloadfore0_1_ 
     [java]     where
     [java]         gbloadfore0_.ORG_ID=gbloadfore0_1_.ORG_ID(+) 
     [java]         and gbloadfore0_.ORG_ID=? 
     [java]         and gbloadfore0_.GRUP_GRUZ=?
...



Исключение -
[java] 3634 ["http-apr-8080"-exec-7] ERROR org.hibernate.util.JDBCExceptionReporter - ORA-00904: "GBLOADFORE0_1_"."GBCAPACITYENTITY_ORG_ID": ???????????? ?????????????

Прогнал запрос в PL/ SQL Dev -

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
select
  gbloadfore0_.ORG_ID as ORG1_4_,
  gbloadfore0_.GRUP_GRUZ as GRUP2_4_,
  gbloadfore0_.CHANGER_ID as CHANGER3_4_,
  gbloadfore0_.FST_2012 as FST4_4_,
  gbloadfore0_.FST_2013 as FST5_4_,
  gbloadfore0_.FST_2014 as FST6_4_,
  gbloadfore0_.FST_2015 as FST7_4_,
  gbloadfore0_.RW_ID as RW8_4_,
  gbloadfore0_.SENDER_ID as SENDER9_4_,
  gbloadfore0_.ST_ID as ST10_4_,
  gbloadfore0_1_.gbCapacityEntity_ORG_ID as gbCapac10_3_ 

from
  MARKSIST.GB_LOAD_FORECAST gbloadfore0_,
  MARKSIST.GB_CAPACITY gbloadfore0_1_ 

where
  gbloadfore0_.ORG_ID=gbloadfore0_1_.ORG_ID(+) and 
  gbloadfore0_.ORG_ID=310961 and 
  gbloadfore0_.GRUP_GRUZ=13



gbloadfore0_1_.gbCapacityEntity_ORG_ID as gbCapac10_3_ !!!

Error:
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37704120
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если закомментировать -

Код: plsql
1.
2.
3.
4.
...
/*,
  gbloadfore0_1_.gbCapacityEntity_ORG_ID as gbCapac10_3_ */
...



, то получаем выборку-
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37704127
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собственно, вопрос - почему имя поля в запросе приняло такой странный вид - gbCapacityEntity_ORG_ID , вместо ORG_ID ?
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37704140
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В предикате where обращение корректное - gbloadfore0_.ORG_ID=gbloadfore0_1_.ORG_ID(+)
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37704165
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanov-voidВ предикате where обращение корректное - gbloadfore0_.ORG_ID=gbloadfore0_1_.ORG_ID(+)
HQL не знаю. Что за плюсик в конце?
Поиграйся запросами, пока в девелопере не будет нормальный запрос.
И приведи структуру таблиц.
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37704172
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123, outer join в Oracle.
Дело в том, что поля gbCapacityEntity_ORG_ID в таблице MARKSIST.GB_CAPACITY gbloadfore0_1_ нет, есть просто ORG_ID. Странно, почему оно приняло такой вид. Структуру таблиц- минутку..
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37704174
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanov-voidPetro123, outer join в Oracle.
это там старый стандарт. В том то и дело. Счас так не пишут.
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37704189
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собственно, структура -

Код: plsql
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.
select dbms_metadata.get_ddl('TABLE', 'GB_CAPACITY', 'MARKSIST') from dual;

  CREATE TABLE "MARKSIST"."GB_CAPACITY" 
   (	"ORG_ID" NUMBER NOT NULL ENABLE, 
	"GRUPGRUZ" NUMBER, 
	"CAP_2012" NUMBER, 
	"CAP_2013" NUMBER, 
	"CAP_2015" NUMBER, 
	"CAP_2020" NUMBER, 
	"CAP_2030" NUMBER, 
	"CHANGER_ID" NUMBER NOT NULL ENABLE, 
	"RW_ID" NUMBER NOT NULL ENABLE
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
  TABLESPACE "TBS_SDE" 
 
select dbms_metadata.get_ddl('TABLE', 'GB_LOAD_FORECAST', 'MARKSIST') from dual;

  CREATE TABLE "MARKSIST"."GB_LOAD_FORECAST" 
   (	"ORG_ID" NUMBER NOT NULL ENABLE, 
	"SENDER_ID" NUMBER, 
	"ST_ID" NUMBER NOT NULL ENABLE, 
	"GRUP_GRUZ" NUMBER, 
	"FST_2012" NUMBER, 
	"FST_2013" NUMBER, 
	"FST_2014" NUMBER, 
	"FST_2015" NUMBER, 
	"CHANGER_ID" NUMBER NOT NULL ENABLE, 
	"RW_ID" NUMBER NOT NULL ENABLE
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
  TABLESPACE "TBS_SDE" 
 
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37704237
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanov-void,
- не поленись, назови ID в обоих таблах по разному (под вопросом, влияет ли это на ОРМ)
- где поле главнойID в подчинённой?
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37704244
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в подчинённой должно быть поле
gbCapacityEntity_id
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37704254
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123, хорошо, попробую. Таблицы не связаны.
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37704261
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123в подчинённой должно быть поле
gbCapacityEntity_id

Почему?
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37704267
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanov-void,
имя ID скорее всего можно ставить одинаковый.
Я всегда ставлю без @Column(name = "ORG_ID") только @Id.
Т.к. это ID сущности или строки таблицы.
Но дело твоё.
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37704276
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanov-voidPetro123в подчинённой должно быть поле
gbCapacityEntity_id

Почему?
Код: java
1.
2.
@ManyToOne(cascade = {CascadeType.REFRESH}, fetch = FetchType.LAZY)
private GbCapacityEntity gbCapacityEntity;


хибер добавит сам
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37704474
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Убрал -

Код: java
1.
 @Column(name = "ORG_ID") 



Код: java
1.
2.
3.
4.
5.
6.
7.
@Entity
@Cache(usage = org.hibernate.annotations.CacheConcurrencyStrategy.NONE)
@Table(name = "MARKSIST.GB_LOAD_FORECAST")
public class GbLoadForecast {
	@Id	
	private Integer orgId;
...



Hibernate сгенерил запрос с именем поля класса в селекте -

[java] Hibernate:
[java] select
[java] this_.orgId as orgId3_0_,
[java] this_.CAP_2012 as CAP2_3_0_,
[java] this_.CAP_2013 as CAP3_3_0_,
...



[java] 1348 ["http-apr-8080"-exec-8] ERROR org.hibernate.util.JDBCExceptionReporter - ORA-00904: "THIS_"."ORGID": ???????????? ?????????????

Но это в порядке эксперимента.
В принципе, в том же порядке поменял имена id- полей, но это ничего не дало -

Код: 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.
@Entity
@Cache(usage = org.hibernate.annotations.CacheConcurrencyStrategy.NONE)
@Table(name = "MARKSIST.GB_LOAD_FORECAST")
public class GbLoadForecast {
	@Id	
	@Column(name = "FST_ORG_ID")
	private Integer fstOrgId;
...
	@ManyToOne(cascade = {CascadeType.REFRESH}, fetch = FetchType.LAZY)
	@JoinTable(name="MARKSIST.GB_CAPACITY",joinColumns={@JoinColumn(name="CAP_ORG_ID")})
	private GbCapacityEntity gbCapacityEntity;
...


@Entity
@Cache(usage = org.hibernate.annotations.CacheConcurrencyStrategy.NONE)
@Table(name = "MARKSIST.GB_CAPACITY")
public class GbCapacityEntity {
	@Id
	@Column(name = "CAP_ORG_ID")
	private Integer capOrgId;
...
	@OneToMany(cascade = CascadeType.ALL,fetch=FetchType.LAZY,mappedBy="gbCapacityEntity")
	private List<GbLoadForecast> gbLoadForecast;
...




[java] Hibernate:
[java] select
[java] gbloadfore0_.FST_ORG_ID as FST1_4_,
[java] gbloadfore0_.GRUP_GRUZ as GRUP2_4_,
[java] gbloadfore0_.CHANGER_ID as CHANGER3_4_,
[java] gbloadfore0_.FST_2012 as FST4_4_,
[java] gbloadfore0_.FST_2013 as FST5_4_,
[java] gbloadfore0_.FST_2014 as FST6_4_,
[java] gbloadfore0_.FST_2015 as FST7_4_,
[java] gbloadfore0_.RW_ID as RW8_4_,
[java] gbloadfore0_.SENDER_ID as SENDER9_4_,
[java] gbloadfore0_.ST_ID as ST10_4_,
[java] gbloadfore0_1_.gbCapacityEntity_CAP_ORG_ID as gbCapac10_3_
[java] from
[java] MARKSIST.GB_LOAD_FORECAST gbloadfore0_,
[java] MARKSIST.GB_CAPACITY gbloadfore0_1_
[java] where
[java] gbloadfore0_.FST_ORG_ID=gbloadfore0_1_.CAP_ORG_ID(+)
[java] and gbloadfore0_.FST_ORG_ID=?
[java] and gbloadfore0_.GRUP_GRUZ=?



[java] 32937 ["http-apr-8080"-exec-9] ERROR org.hibernate.util.JDBCExceptionReporter - ORA-00904: "GBLOADFORE0_1_"."GBCAPACITYENTITY_CAP_ORG_ID": ???????????? ?????????????
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37704498
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не ясно, почему в предикате gbloadfore0_1_.CAP_ORG_ID (правильно), а в селекте - gbloadfore0_1_.gbCapacityEntity_CAP_ORG_ID (не правильно).
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37704512
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanov-void,
у меня подозрение, что ты не генерируешь БД от хибера.
Там один вызов всего.
- Добейся маппинга-БД.
Select ПОТОМ!
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37704524
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
Entity
@Cache(usage = org.hibernate.annotations.CacheConcurrencyStrategy.NONE)
@Table(name = "MARKSIST.GB_LOAD_FORECAST")
public class GbLoadForecast {
	@Id	
	@Column
	private Integer id;
...
	@ManyToOne(cascade=CascadeType.ALL)
        @JoinColumn(name="CAP_ID")
	private GbCapacityEntity gbCapacityEntity;
...


@Entity
@Cache(usage = org.hibernate.annotations.CacheConcurrencyStrategy.NONE)
@Table(name = "MARKSIST.GB_CAPACITY")
public class GbCapacityEntity {
	@Id
	@Column
	private Integer id;
...

	private List<GbLoadForecast> gbLoadForecast;



em.remove(экземпляр GbCapacityEntity);

Давайте пойдем от простого. Сначала сделайте так ;)
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37704529
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверин,

*private List<GbLoadForecast> gbLoadForecast; - тоже удалить ;)
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37704538
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123, да, я использую уже существующие таблицы. Теперь все ясно.. Спасибо!
...
Рейтинг: 0 / 0
25 сообщений из 67, страница 2 из 3
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate : объединение delete clause
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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