powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate @ManyToMany
4 сообщений из 4, страница 1 из 1
Hibernate @ManyToMany
    #35520126
yelena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, пожалуйста, в Hibernate 3 можно в @ManyToMany использовать fetch = FetchType.LAZY ? Работает ли это?

У меня возникла проблема:

Имеется класс Item проаннотированный следующим образом:

Код: 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.
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.
127.
128.
129.
130.
131.
132.
133.
@Entity
@Table(name = "CRN_NB_ITEM")
 public   class  Item  extends  NEntity
{
     private   Long  itemId;
     private   Long  version;
     private  String status;
     private   Long  classifierId;
     private  String title;
     private  String description;
     private  String keywords;
     private  String content;
     private   boolean  editable;
     private  String extId;
     private   boolean  internal;

     private  Set files =  new  HashSet();

    @Column(name = "ITEM_ID")
     public   Long  getItemId() {
         return  itemId;
    }

     public   void  setItemId( Long  itemId) {
         this .itemId = itemId;
    }

    @Column(name = "VERSION")
     public   Long  getVersion() {
         return  version;
    }

     public   void  setVersion( Long  version) {
         this .version = version;
    }

    @Column(name = "STATUS")
     public  String getStatus() {
         return  status;
    }

     public   void  setStatus(String status) {
         this .status = status;
    }

    @Column(name = "CATEGORY_ID")
     public   Long  getClassifierId() {
         return  classifierId;
    }

     public   void  setClassifierId( Long  classifierId) {
         this .classifierId = classifierId;
    }

    @Column(name = "TITLE")
     public  String getTitle() {
         return  title;
    }

     public   void  setTitle(String title) {
         this .title = title;
    }

    @Column(name = "DESCRIPTION")
     public  String getDescription() {
         return  description;
    }

     public   void  setDescription(String description) {
         this .description = description;
    }

    @Column(name = "KEYWORDS")
     public  String getKeywords() {
         return  keywords;
    }

     public   void  setKeywords(String keywords) {
         this .keywords = keywords;
    }

    @Column(name = "CONTENT")
    @Lob
     public  String getContent() {
         return  content;
    }

     public   void  setContent(String content) {
         this .content = content;
    }

    @Column(name = "EDITABLE")
     public   boolean  isEditable() {
         return  editable;
    }

     public   void  setEditable( boolean  editable) {
         this .editable = editable;
    }

    @Column(name = "EXT_ID")
     public  String getExtId() {
         return  extId;
    }

     public   void  setExtId(String extId) {
         this .extId = extId;
    }

    @Column(name = "INTERNAL")
     public   boolean  isInternal() {
         return  internal;
    }

     public   void  setInternal( boolean  internal) {
         this .internal = internal;
    }    

    @ManyToMany(targetEntity = ru.granit.callcenter.model.File. class , fetch = FetchType.LAZY,
            cascade = {CascadeType.PERSIST})
    @JoinTable(name="CRN_NB_ITEMS_FILES",
        joinColumns=
            @JoinColumn(name="ITEM_ID", nullable = true),
        inverseJoinColumns=
            @JoinColumn(name="FILE_ID")
    )
     public  Set getFiles() {
         return  files;
    }

     public   void  setFiles(Set files) {
         this .files = files;
    }
}

и выполняется поиск item'ов.

В логе вижу:

Hibernate: select * from ( select item0_.ID as ID1_, item0_.CONTENT as CONTENT1_, item0_.VERSION as VERSION1_, item0_.DESCRIPTION as DESCRIPT4_1_, item0_.STATUS as STATUS1_, item0_.CATEGORY_ID as CATEGORY6_1_, item0_.TITLE as TITLE1_, item0_.KEYWORDS as KEYWORDS1_, item0_.INTERNAL as INTERNAL1_, item0_.EDITABLE as EDITABLE1_, item0_.EXT_ID as EXT11_1_, item0_.ITEM_ID as ITEM12_1_ from CRN_NB_ITEM item0_ where 1=1 and (item0_.CATEGORY_ID in (29257 , 32562)) and (item0_.STATUS like 'active') and (lower(item0_.CONTENT) like ?) order by item0_.ITEM_ID, item0_.VERSION ) where rownum <= ?

Hibernate: select files0_.ITEM_ID as ITEM1_1_, files0_.FILE_ID as FILE2_1_, file1_.ID as ID3_0_, file1_.NAME as NAME3_0_, file1_.TYPE as TYPE3_0_, file1_.CONTENT_ID as CONTENT6_3_0_, file1_.DESCRIPTION as DESCRIPT4_3_0_, file1_.EXT_ID as EXT5_3_0_ from CRN_NB_ITEMS_FILES files0_ left outer join CRN_NB_FILES file1_ on files0_.FILE_ID=file1_.ID where files0_.ITEM_ID=?

Hibernate: select files0_.ITEM_ID as ITEM1_1_, files0_.FILE_ID as FILE2_1_, file1_.ID as ID3_0_, file1_.NAME as NAME3_0_, file1_.TYPE as TYPE3_0_, file1_.CONTENT_ID as CONTENT6_3_0_, file1_.DESCRIPTION as DESCRIPT4_3_0_, file1_.EXT_ID as EXT5_3_0_ from CRN_NB_ITEMS_FILES files0_ left outer join CRN_NB_FILES file1_ on files0_.FILE_ID=file1_.ID where files0_.ITEM_ID=?


Не понимаю, почему выполняется select files0_.ITEM_ID и т.д., если я пишу fetch = FetchType.LAZY.

Может, я что-то делаю не так?
...
Рейтинг: 0 / 0
Hibernate @ManyToMany
    #35520279
yelena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дело ясное, что дело темное.
Раз файлы отдельными запросами выбираются, значит, FetchType.LAZY срабатывает.
Только ведь не прошу я никаких файлов...
...
Рейтинг: 0 / 0
Hibernate @ManyToMany
    #35520288
yelena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тема закрыта.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Hibernate @ManyToMany
    #37980799
Борн
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
yelena,

А вы не могли бы вы сказать решение, если вы его нашли?
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate @ManyToMany
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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