Originally posted by Paul Sturrock:
Can you show us your mapping files, and the code you use to get a user and their addresses?
Hi
I have the following problem in Listing the records.
When I try to list the records the first record is always null.
My Hibernate version:2.1.7
Problem:
==========
I have two tables;
1) User
2) Card with a one-to-many relation
(a User can have many addresses).
I declared a list in User mapping.
=================================
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
<hibernate-mapping package="com.smarteck.smartsecurity.users">
<class name="SmartUser" table="SmartUser">
<id
column="userId"
name="userId"
type="integer"
>
<generator class="sequence">
<param name="sequence">UserIdSeq</param>
</generator>
</id>
<list inverse="true" name="cardListByOwnerUser">
<key column="ownerUser" />
<index column="cardNo" />
<one-to-many class="com.smarteck.smartcrm.cards.Card" />
</list>
</class>
</hibernate-mapping>
following is the mapping for card Table:
=========================================
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
<hibernate-mapping package="com.smarteck.smartcrm.cards">
<class name="Card" table="Card">
<composite-id class="com.smarteck.smartcrm.cards.CardPK" name="cardPK">
<key-property
column="cardNo"
name="cardNo"
type="integer"
/>
<key-many-to-one
class="com.smarteck.smartsecurity.users.SmartUser"
column="ownerUser"
name="ownerUser"
/>
</composite-id>
<property
column="nameOnCard"
length="255"
name="nameOnCard"
not-null="false"
type="string"
/>
</class>
</hibernate-mapping>
The Code in
Struts Action:
===========================
Session s = getSession();
Criteria c = s.createCriteria(SmartUser.class);
List userList = crit.list();
// Session committed and closed here
// List object put in HttpServletRequest
Following code is in the
jsp =================================
// Get the userList from request
for(int i=0; i<userList.size(); i++) {
SmartUser user = (SmartUser) userList.get(i);
List cardList = user.getCardListByOwnerUser(); // In this list, always first element is null
for (j=0; j<cardList.size(); j++) {
Card card = (Card) cardList.get(j);
System.out.println("Card="+card);
}
}
For example, if I have 5 Card records, when I call
user.getCardListByOwnerUser(), I am getting a List of size=5.
when I call user.getCardListByOwnerUser(), the first element in the list
is always null.
But the first element in the list is null and the remaining 4 elements are valid records.
Any suggestions??
thx & rgds,
Jim