powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate : объединение delete clause
67 сообщений из 67, показаны все 3 страниц
Hibernate : объединение delete clause
    #37701614
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую!

Возможно- ли как- то объединить delete clause, чтобы, например, избежать такой последовательности вызовов -

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
...
    	String hql = "DELETE FROM com.intellex.marksist.hbn.model.GbCapacityEntity "  + 
	     			 "WHERE orgId = :some_id";
    	dao.delete(hql, id);
    	
    	hql = "DELETE FROM com.intellex.marksist.hbn.model.GbLoadForecast "  + 
		 	  "WHERE orgId = :some_id";    	
    	dao.delete(hql, id);

...



Был бы весьма признателен за информацию.
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37701640
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Объеденить для чего? А почему каскадом не сделать?
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37701645
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую, Blazkowicz!

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

Код: 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.
...

@Entity
@Cache(usage = org.hibernate.annotations.CacheConcurrencyStrategy.NONE)
@Table(name = "MARKSIST.GB_LOAD_FORECAST")
public class GbLoadForecast {
	@Id	
	@Column(name = "ORG_ID")
	private Integer orgId;
	...	
	@ManyToOne(cascade={CascadeType.ALL},fetch = FetchType.LAZY)
	private List<GbCapacityEntity> gbCapacityEntity;	
    public List<GbCapacityEntity> getGbLoadForecast() {
        return gbCapacityEntity;
    }
    /**
     * @param gbLoadForecast
     */
    public void setGbLoadForecast(List<GbCapacityEntity> gbCapacityEntity) {
        this.gbCapacityEntity = gbCapacityEntity;
    }


...

@Entity
@Cache(usage = org.hibernate.annotations.CacheConcurrencyStrategy.NONE)
@Table(name = "MARKSIST.GB_CAPACITY")
public class GbCapacityEntity {
	@Id
	@Column(name = "ORG_ID")
	private Integer orgId;
	
...	
	@OneToMany(targetEntity=com.intellex.marksist.hbn.model.GbLoadForecast.class, cascade={CascadeType.ALL}, fetch=FetchType.LAZY)
	@JoinTable(name="MARKSIST.GB_LOAD_FORECAST",joinColumns={@JoinColumn(name="ORG_ID")},inverseJoinColumns={@JoinColumn(name="ORG_ID")})
	@OnDelete(action=OnDeleteAction.CASCADE)
	private List<GbLoadForecast> gbLoadForecast;
	
    @JoinColumn(name="ORG_ID", nullable = false)
    @OnDelete(action=OnDeleteAction.CASCADE)
    public List<GbLoadForecast> getGbLoadForecast() {
        return gbLoadForecast;
    }
    /**
     * 
     * @param gbLoadForecast
     */
    public void setGbLoadForecast(List<GbLoadForecast> gbLoadForecast) {
        this.gbLoadForecast = gbLoadForecast;
    }

...



Caused by: org.hibernate.AnnotationException: @OneToOne or @ManyToOne on com.intellex.marksist.hbn.model.GbLoadForecast.gbCapacityEntity references an unknown entity: java.util.List
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37702151
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanov-void,
минимальный код до ошибки приведи
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37702159
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanov-void,

private List<GbCapacityEntity> gbCapacityEntity; этого не понял.
можнт просто
private GbCapacityEntity gbCapacityEntity; ?
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37702183
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую, Petro123!

Собственно, двунаправленная ассоциация - MARKSIST.GB_CAPACITY AS A 1..1 ---- 0..* MARKSIST.GB_LOAD_FORECAST AS B и попытка удалить все связанные записи из B при соответствующей записи из А. Приводит к такому вот исключению.
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37702186
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую, Озверин!

Сейчас попробую, спасибо.
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37702204
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanov-void,
Озверин прав, в НЕ главном классе (коллекции) должна быть ссылка на родителя
2.
в НЕ главном классе нужно убрать каскад.
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37702264
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Несколько модифицировал, убрал каскад в не главном классе, добавил ссылку -

Код: 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.
...
@Entity
@Cache(usage = org.hibernate.annotations.CacheConcurrencyStrategy.NONE)
@Table(name = "MARKSIST.GB_LOAD_FORECAST")
public class GbLoadForecast {
	@Id	
	@Column(name = "ORG_ID")
	private Integer orgId;
...
	@ManyToOne
    private GbCapacityEntity gbCapacityEntity;
	/**
	 * 
	 * @return
	 */
    public GbCapacityEntity getGbLoadForecast() {
        return gbCapacityEntity;
    }
    /**
     * @param gbLoadForecast
     */
    public void setGbLoadForecast(GbCapacityEntity gbCapacityEntity) {
        this.gbCapacityEntity = gbCapacityEntity;
    }
...

@Entity
@Cache(usage = org.hibernate.annotations.CacheConcurrencyStrategy.NONE)
@Table(name = "MARKSIST.GB_CAPACITY")
public class GbCapacityEntity {
	@Id
	@Column(name = "ORG_ID")
	private Integer orgId;
	
...	
	@OneToMany(targetEntity=com.intellex.marksist.hbn.model.GbLoadForecast.class, cascade={CascadeType.ALL}, fetch=FetchType.LAZY)
	@JoinTable(name="MARKSIST.GB_LOAD_FORECAST",joinColumns={@JoinColumn(name="ORG_ID")},inverseJoinColumns={@JoinColumn(name="ORG_ID")})
	@OnDelete(action=OnDeleteAction.CASCADE)
	private List<GbLoadForecast> gbLoadForecast;
	/**
	 * 
	 * @return
	 */
    public List<GbLoadForecast> getGbLoadForecast() {
        return gbLoadForecast;
    }
    /**
     * 
     * @param gbLoadForecast
     */
    public void setGbLoadForecast(List<GbLoadForecast> gbLoadForecast) {
        this.gbLoadForecast = gbLoadForecast;
    }
...



Теперь такое исключение -
[java] Caused by: org.hibernate.MappingException: only inverse one-to-many associations may use on-delete="cascade": com.intellex.marksist.hbn.model.GbCapacityEntity.gbLoadForecast
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37702274
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подозреваю, не достает аттрибутов в
Код: java
1.
@ManyToOne

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

@OnDelete(action=OnDeleteAction.CASCADE) - лишнее видимо. Уберите, при CASCADE=ALL итак удалить должен.
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37702293
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanov-void,

inverseJoinColumns - лишнее (оно для много-много)
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37702322
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверин@OnDelete(action=OnDeleteAction.CASCADE) - лишнее видимо. Уберите, при CASCADE=ALL итак удалить должен.
Petro123inverseJoinColumns - лишнее (оно для много-много)

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

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

...
		query.setParameter("id1", orgId);
		query.setParameter("id2", gcId);
                List results = query.list();
...



SQLGrammar яросте -
[java] Caused by: java.sql.SQLException: ORA-00904: "GBLOADFORE0_"."GBCAPACITYENTITY_ORG_ID": ???????????? ?????????????
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37702536
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В консоль свалилось примерно следующее -


[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_.gbCapacityEntity_ORG_ID as gbCapac11_4_,
[java] gbloadfore0_.RW_ID as RW8_4_,
[java] gbloadfore0_.SENDER_ID as SENDER9_4_,
[java] gbloadfore0_.ST_ID as ST10_4_
[java] from
[java] MARKSIST.GB_LOAD_FORECAST gbloadfore0_
[java] where
[java] gbloadfore0_.ORG_ID=?
[java] and gbloadfore0_.GRUP_GRUZ=?


[java] 4201 ["http-apr-8080"-exec-7] WARN org.hibernate.util.JDBCExceptionReporter - SQL Error: 904, SQLState: 42000
[java] 4201 ["http-apr-8080"-exec-7] ERROR org.hibernate.util.JDBCExceptionReporter - ORA-00904: "GBLOADFORE0_"."GBCAPACITYENTITY_ORG_ID": ???????????? ?????????????
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37702566
vas0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanov-void,

Если у тебя есть двунаправленное отношение, то с одной из сторон должен быть задан аттрибут mappedBy. Если аттрибут не задать то hibernate не понимает что это два конца одного и того же отношения, а воспринимает как два разных отношения.
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37702572
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую, vas0!

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

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
// GbCapacityEntity class
...
	@OneToMany(targetEntity=com.intellex.marksist.hbn.model.GbLoadForecast.class, cascade={CascadeType.ALL}, fetch=FetchType.LAZY, mappedBy="gbCapacityEntity")
	@JoinTable(name="MARKSIST.GB_LOAD_FORECAST",joinColumns={@JoinColumn(name="ORG_ID")})
	private List<GbLoadForecast> gbLoadForecast;

// GbLoadForecast class
...
	@ManyToOne
	private GbCapacityEntity gbCapacityEntity;

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

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
...

// GbCapacityEntity class
...
	@OneToMany(targetEntity=com.intellex.marksist.hbn.model.GbLoadForecast.class, cascade={CascadeType.ALL}, fetch=FetchType.LAZY, mappedBy="gbCapacityEntity")
	@JoinTable(name="MARKSIST.GB_LOAD_FORECAST",joinColumns={@JoinColumn(name="ORG_ID")})
	private List<GbLoadForecast> gbLoadForecast;

// GbLoadForecast class
...
	@ManyToOne
	private GbCapacityEntity gbCapacityEntity;
        @JoinColumn(name = "ORG_ID")
...



..получается -


[java] Caused by: org.hibernate.MappingException: Repeated column in mapping for entity: com.intellex.marksist.hbn.model.GbLoadForecast column: ORG_ID (should be mapped with insert="false" update="false")


Видимо, одинаковые имена id- полей объединяемых таблиц не позволяют применить этот вариант.
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37702783
vas0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanov-void,

По моему @JoinTable у тебя ерунда какая то. Дополнительной таблицы соединения ты же не создаешь? Удали эту аннотацию.
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37702787
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vas0, нет, не создаю. Сейчас попробую, благодарю.
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37702866
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мм.. там косячина в get/ set, немного напутано. Краткий синопсис выложу чуть позже, думаю, дело в этих методах.
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37702912
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вобщем, не удалось добиться желаемого эффекта:

Код: 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.
...
// GbCapacityEntity class

	@OneToMany(cascade = CascadeType.ALL,fetch=FetchType.LAZY,mappedBy="gbCapacityEntity")
	private List<GbLoadForecast> gbLoadForecast;
	/**
	 * 
	 * @return
	 */
    public List<GbLoadForecast> getGbLoadForecast() {
        return gbLoadForecast;
    }
    /**
     * 
     * @param gbLoadForecast
     */
    public void setGbLoadForecast(List<GbLoadForecast> gbLoadForecast) {
        this.gbLoadForecast = gbLoadForecast;
    }

...

// GbLoadForecast class

	@ManyToOne(cascade = {CascadeType.REFRESH}, fetch = FetchType.LAZY)
	private GbCapacityEntity gbCapacityEntity;
	/**
	 * @return
	 */
    public GbCapacityEntity getGbCapacityEntity() {
        return gbCapacityEntity;
    }
    /**
     * @param gbLoadForecast
     */
    public void setGbCapacityEntity(GbCapacityEntity gbCapacityEntity) {
        this.gbCapacityEntity = gbCapacityEntity;
    }
...

// Запрос

	    String hql = "FROM com.intellex.marksist.hbn.model.GbLoadForecast E " +
		 			 "WHERE E.orgId = :id1 AND E.cargoGroup = :id2";
	    
		Session session = HibernateUtil.getMarksistSessionFactory().openSession();
		session.beginTransaction();
		
		Query query = session.createQuery(hql);
		query.setParameter("id1", orgId);
		query.setParameter("id2", gcId);
		List results = query.list();
		session.close();
...



На query.list(); вылетает -

[java] 4085 ["http-apr-8080"-exec-10] ERROR org.hibernate.util.JDBCExceptionReporter - ORA-00904: "GBLOADFORE0_"."GBCAPACITYENTITY_ORG_ID": ???????????? ?????????????
...
Рейтинг: 0 / 0
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
Hibernate : объединение delete clause
    #37704543
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую, Озверин!

Хорошо, напоследок грохнем список.
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37704544
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверин,
без обратной связи не будет работать каскад
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
public class GbCapacityEntity {
	@Id
	private Integer orgId;
	@OneToMany(cascade = CascadeType.ALL,fetch=FetchType.LAZY,mappedBy="gbCapacityEntity")
	@JoinTable(name="MARKSIST.GB_LOAD_FORECAST",joinColumns={@JoinColumn(name="ORG_ID")})
	private List<GbLoadForecast> gbLoadForecast;

public class GbLoadForecast {
	@Id	
	private Integer orgId;
>>>	@ManyToOne(cascade = {CascadeType.REFRESH}, fetch = FetchType.LAZY)
    private GbCapacityEntity gbCapacityEntity;
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37704549
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,
будет будет ;) Если хибером структуру бд создавать.
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37704551
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверин, пардон, пропустил пост. Сейчас попробую сделать, как вы указали.
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37704553
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОзверинPetro123,
будет будет ;) Если хибером структуру бд создавать.
на пиво.
Я пробовал. :)
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37704559
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123ОзверинPetro123,
будет будет ;) Если хибером структуру бд создавать.
на пиво.
Я пробовал. :)

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

Не забудьте структуру таблиц удалить. И в persistenceunit`е указать
<property name="hibernate.hbm2ddl.auto" value="create"/> он будет каждый раз создавать новую структуру бд(стирая данные, если что). Опция чисто для тестирования и создания первоначальной структуры, если вам лень ручками ;)
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37704567
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Запросто ,ящик пива можешь уже высылать в Самару
фиг, пузырь по электронке 8-)
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37704620
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверин, так, хорошо - а если, скажем, в базе уже есть некоторые таблицы, которые "уже есть" и которые должны оставаться таковыми - как "вручную" сгенерировать те две таблицы, о которых шла речь в топике?
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37704628
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanov-void,
если есть и РАБОТАЕТ, то будешь настраивать на готовые.
У тебя же 2-ой день про одно и то-же.
Запрос заработал на хибер-маппинге?
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37704638
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123, нет еще - нужно сгенерировать хибером две таблицы, при этом оставив остальные как есть. Как бы это сделать?
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37704644
zalexaka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanov-void,

1. создать в др.схеме
2. забрать скрипт
3. создать в своей
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37704657
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверин
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
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;



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

Давайте пойдем от простого. Сначала сделайте так ;)

Таблица
GB_CAPACITY
с полем integer id и Pk по полю Id

Таблица
GB_LOAD_FORECAST
с полем integer id и Pk по полю Id
с полем CAP_ID

+у вас должен быть foreign key
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37704659
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую, zalexaka!

Хорошая идея, спасибо!
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37704662
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanov-voidPetro123, нет еще - нужно сгенерировать хибером две таблицы, при этом оставив остальные как есть. Как бы это сделать?

по другому назвать новые таблицы;) в аннотациях к классам
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37704676
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверин, спасибо, сейчас сделаем.
...
Рейтинг: 0 / 0
Hibernate : объединение delete clause
    #37704839
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мм.. буквально нет слов, чтобы описать восторг от наконец- то разрешившегося вопроса, который уже набил оскомину; в еще большей степени - от полученных в ходе дискуссии релевантных знаний и информации к размышлению, которые кроме как через преемственность опыта получить достаточно проблематично.

Все получилось! Все работает! Хочу поблагодарить всех, принявших участие в обсуждении темы и выразить свою благодарность. Спасибо!
...
Рейтинг: 0 / 0
67 сообщений из 67, показаны все 3 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate : объединение delete clause
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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