|
|
|
many-to-many в Hibernate
|
|||
|---|---|---|---|
|
#18+
остановился на 2-ом примере из книги HIBERNATE - Relational Persistence for Idiomatic Java (hibernate.org),а именно на выводе коллекции при создании связи many-to-many между таблица events и person. маппинг person <hibernate-mapping> <class name="test.com.Person" table="person"> <id name="id" column="id" type="java.lang.Long"> <generator class="native"/> </id> <property name="firstname"/> <property name="lastname"/> <property name="age"> <column name="age" sql-type="integer" not-null="true"/> </property> <set name="events" table="person_event"> <key column="id"/> <many-to-many column="event_id" class="test.com.Event" outer-join="true" /> </set> </class> </hibernate-mapping> маппинг events <hibernate-mapping> <class name="test.com.Event" table="events"> <id name="event_id" column="id" type="java.lang.Long"> <generator class="native"/> </id> <property name="title"/> </class> </hibernate-mapping> создаю link table create table person_event (id bigint not null references person(id) , event_id bigint not null references events(event_id)); у меня заполненная таблица events и person в экшне я добавляю событие к персоне Person aPerson = (Person)sess.load(test.com.Person.class,new Long(9)); Event aEvent = (Event)sess.load(test.com.Event.class,new Long(1)); aPerson.getEvents().add(aEvent); все великолепно добавляется. А когда пытаюсь вывести на страницу jsp для каждого person поле title из events, то у меня появляется ексепшн javax.servlet.ServletException: javax.servlet.jsp.JspException: org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: test.com.Person.events, no session or session was closed попробовал поставить lazy="false" <set name="events" table="person_event" lazy="false"> <key column="id"/> <many-to-many column="event_id" class="test.com.Event" outer-join="true" /> </set> то все равно появляется ексепшн javax.servlet.ServletException: javax.servlet.jsp.JspException: Error getting property 'title' from bean of type org.hibernate.collection.PersistentSet может как-нибудь еще нужно инциализировать коллекцию.Помогите разобраться со сложившейся проблемой. Взаранее благодарен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 19:14 |
|
||
|
many-to-many в Hibernate
|
|||
|---|---|---|---|
|
#18+
Судя по всему берете проперти не у того бина, нужно у ивента, а берете у коллекции (в которой скорее всего лежат ивенты). Хибернейт тут не причем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 20:35 |
|
||
|
many-to-many в Hibernate
|
|||
|---|---|---|---|
|
#18+
беру я след. образом, использую jsf dataTable <h:dataTable value="#{resultbean.all}" var="el"> <h:column> <h:outputText value="#{el.firstname}" /> <f:verbatim>,</f:verbatim> </h:column> <h:column> <h:outputText value="#{el.lastname}" /> </h:column> <h:column> <h:dataTable value="#{el.events}" var="event"> <h:column> <h:outputText value="#{event.title}" /> </h:column> </h:dataTable> </h:column> </h:dataTable> если убрать последний h:column то работает все нормально.Но у меня в каждом объетк класса Person содержится коллекция events c атрибутами title и event_id.Судя по всему у меня пустая коллекция у каждого person.Может как-нибудь еще нужно ее заполнять? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2006, 11:53 |
|
||
|
many-to-many в Hibernate
|
|||
|---|---|---|---|
|
#18+
в общем очень советую придерживаться такого правила - за пределы DAO&Bussiness Facade должны выходить только полность загруженные объекты. Весь lazy если он есть, должен заканчиваться до закрытия hibernate session ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2006, 14:24 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=33736961&tid=2149215]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
70ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
| others: | 239ms |
| total: | 405ms |

| 0 / 0 |
