We're updating the issue view to help you get more done. 

ScrollableResults JoinFetch don't set child collection correctly after the second parent object

Description

ScrollableResults JoinFetch set child collection correctly at first parent object.
but after the second parent object, It set only the first element of a child collection.

I made the following tables.

CREATE TABLE owners (
id NUMBER(36, 0) NOT NULL PRIMARY KEY,
first_name VARCHAR(30),
last_name VARCHAR(30),
address VARCHAR(255),
city VARCHAR(80),
telephone VARCHAR(20),
version NUMBER(36, 0) DEFAULT 0
);
CREATE TABLE types (
id NUMBER(36, 0) NOT NULL PRIMARY KEY,
name VARCHAR(80),
version NUMBER(36, 0) DEFAULT 0
);
CREATE TABLE pets (
id NUMBER(36, 0) NOT NULL PRIMARY KEY,
name VARCHAR(30),
birth_date DATE,
type_id NUMBER(36, 0),
owner_id NUMBER(36, 0),
version NUMBER(36, 0) DEFAULT 0
);

and inserted the following data.

INSERT INTO owners VALUES (1, 'Betty', 'Davis', '638 Cardinal Ave.', 'Sun Prairie', '6085551749', 0);
INSERT INTO owners VALUES (2, 'Eduardo', 'Rodriquez', '2693 Commerce St.', 'McFarland', '6085558763', 0);

INSERT INTO pets VALUES (1, 'Leo', '2000-09-07', 1, 1, 0);
INSERT INTO pets VALUES (2, 'Basil', '2002-08-06', 2, 1, 0);
INSERT INTO pets VALUES (3, 'Rosy', '2001-04-17', 3, 2, 0);
INSERT INTO pets VALUES (4, 'Jewel', '2000-03-07', 4, 2, 0);
INSERT INTO pets VALUES (5, 'Iggy', '2000-11-30', 5, 2, 0);

INSERT INTO types VALUES (1, 'cat', 0);
INSERT INTO types VALUES (2, 'dog', 0);
INSERT INTO types VALUES (3, 'lizard', 0);
INSERT INTO types VALUES (4, 'snake', 0);
INSERT INTO types VALUES (5, 'bird', 0);

and I execute following code.

String hqlJoinFetchTest =
"from Owner owner " +
"left outer join fetch owner.pets as pets " +
"left outer join fetch pets.type " +
"order by owner.firstName, owner.lastName";

Query query = session.createQuery(hqlJoinFetchTest);

ScrollableResults cursor = query.scroll();

while ( cursor.next() ) {
Owner owner = (Owner)cursor.get(0);
System.out.println(owner);
}

result of this code is following.

petclinic.domain.Owner@15d616e[id=1,version=0,firstName=Betty,lastName=Davis,
petclinic.domain.Pet@136d9d8[id=2,version=0,name=Basil,birthDate=2002-08-06,
petclinic.domain.PetType@1be2893[id=2,version=0,name=dog]
petclinic.domain.Pet@14a75bb[id=1,version=0,name=Leo,birthDate=2000-09-07,
petclinic.domain.PetType@17779e3[id=1,version=0,name=cat]
petclinic.domain.Owner@e3570c[id=2,version=0,firstName=Eduardo,lastName=Rodriquez
petclinic.domain.Pet@167e3a5[id=4,version=0,name=Jewel,birthDate=2000-03-07,
petclinic.domain.PetType@1926e90[id=4,version=0,name=snake]

First owner object set collection collectly.
but second owner object don't set second pet object(id=5) and third pet object(id=6).

Environment

Hibernate 3.1
Oracle10gR2
Oracle JDBC Driver 10.2.0.1.0
Sun JDK 1.5.0_06
Spring 1.2.6

Status

Assignee

Gail Badner

Reporter

Masahiro Hirashima

Fix versions

Labels

None

backPortable

None

Suitable for new contributors

None

Requires Release Note

None

Pull Request

None

backportDecision

None

Components

Affects versions

3.1

Priority

Major