Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate: есть звязь @ManyToMany - имею на базе UPDATE, DELETE и INSERT вместо UPDATE / 5 сообщений из 5, страница 1 из 1
20.07.2007, 11:48:10
    #34672655
asmagin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate: есть звязь @ManyToMany - имею на базе UPDATE, DELETE и INSERT вместо UPDATE
Hibernate: есть звязь @ManyToMany - имею на базе UPDATE, DELETE и INSERT вместо UPDATE. Как избавится от ненужных DELETE и INSERT. Вот пример кода:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
@Entity
@Table(name = "TABLE_A")
@SequenceGenerator(name = "A_SEQ", allocationSize =  1 , initialValue =  1 , sequenceName = "A_SEQ")
 public   class  A {
     private   Long  number;
     private  java.util.Date abolishedDate;
     private  List<B> principalProducts;

    @Id
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="A_SEQ")
    @Column(name = "recid")
     public   Long  getNumber() {
         return  number;
    }
    .
    .
   @ManyToMany(fetch=FetchType.LAZY, cascade={CascadeType.REFRESH,CascadeType.MERGE})
   @JoinTable(name="A_TO_B")  
     public  List<B> getPrincipalProducts() {
         return  principalProducts;
    }    
}
и
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
@Entity
@Table(name = "TABLE_B")
@SequenceGenerator(name = "B_SEQ", allocationSize =  1 , initialValue =  1 , sequenceName = "B_SEQ")
 public   class  B  implements  Serializable {
    @Id
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="B_SEQ")
     private  Integer id;
    .
    .
    @Column
     private  String name
    .
    .
}

И когда отрабатывает след функция :

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
@Transactional(propagation = Propagation.REQUIRES_NEW)
 public   void  abolish() {
      Query query = getEntityManager().createQuery("SELECTa FROM A a");
      List<A> list = query.getResultList();
       for  (A dbo : list) {
         dbo.setAbolishedDate( new  java.util.Date());
         List<B> plist =  dbo.getPrincipalProducts();

          for (B prod : plist) 
             System.out.println(prod.toString());

         dbo = getEntityManager().merge(dbo);
     }
}
в логах я вижу:
update TABLE_A set abolishedDate=?, pofType=? where id=?
delete from A_TO_B where TABLE_A_id=?
insert into A_TO_B(...) values (?, ?)
insert into A_TO_B(...) values (?, ?)
...
Рейтинг: 0 / 0
20.07.2007, 12:17:45
    #34672765
Timm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate: есть звязь @ManyToMany - имею на базе UPDATE, DELETE и INSERT вместо UPDATE
Код: plaintext
cascade={CascadeType.REFRESH,CascadeType.MERGE}
сам просишь.
...
Рейтинг: 0 / 0
20.07.2007, 12:30:21
    #34672826
asmagin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate: есть звязь @ManyToMany - имею на базе UPDATE, DELETE и INSERT вместо UPDATE
Timm
Код: plaintext
cascade={CascadeType.REFRESH,CascadeType.MERGE}
сам просишь.

А что надо попросить-то?
...
Рейтинг: 0 / 0
20.07.2007, 12:46:34
    #34672891
expp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate: есть звязь @ManyToMany - имею на базе UPDATE, DELETE и INSERT вместо UPDATE
asmagin
Код: plaintext
1.
         dbo = getEntityManager().merge(dbo);  

убери к чёрту . и без этого проапдейтится
...
Рейтинг: 0 / 0
07.08.2007, 11:38:14
    #34709982
expp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate: есть звязь @ManyToMany - имею на базе UPDATE, DELETE и INSERT вместо UPDATE
upd
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate: есть звязь @ManyToMany - имею на базе UPDATE, DELETE и INSERT вместо UPDATE / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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