Hallo,
ich versuche mit der Hibernate-Annotation @BatchSize ein Paging beim Auslesen aus meiner MySQL-Datenbank aufzubauen. Dazu habe ich eine Klasse A die eine OneToMany Referenz auf B hat. B hat ein Attribut description:
[Java]
@Entity
public class A
{
@Id
protected String id;
@OneToMany( cascade = CascadeType.ALL, fetch = FetchType.LAZY )
@BatchSize( size = 10 )
protected List<B> bList;
}
@Entity
public class A
{
@Id
protected String id;
protected String description;
}
[/Java]
Innerhalb einer laufenden Session lese ich später die B's aus A aus:
[Java]
List<A> dbA = session.createQuery( "from A a where a.id like ?" ).setString( 0, 1 ).list();
for( B b : dbA.getBList() )
{
if( null != b.getId() && null != b.getDescription() )
{
System.out.println( b.getDescription() );
}
}
[/Java]
Jetzt gibt mit das Programm aber nicht nur für die ersten 10 B's die Description sondern für alle aus. Dabei dachte ich dass für alle Objekte, die nach dem Batch-Size-Index von 10 kommen, alle Werte später nachgeladen werden und jetzt noch gar nicht bekannt sind.
Wo kann mein Fehler liegen, wo könnte ich mehr über BatchSize nachlesen?
Grüße
Pacal
ich versuche mit der Hibernate-Annotation @BatchSize ein Paging beim Auslesen aus meiner MySQL-Datenbank aufzubauen. Dazu habe ich eine Klasse A die eine OneToMany Referenz auf B hat. B hat ein Attribut description:
[Java]
@Entity
public class A
{
@Id
protected String id;
@OneToMany( cascade = CascadeType.ALL, fetch = FetchType.LAZY )
@BatchSize( size = 10 )
protected List<B> bList;
}
@Entity
public class A
{
@Id
protected String id;
protected String description;
}
[/Java]
Innerhalb einer laufenden Session lese ich später die B's aus A aus:
[Java]
List<A> dbA = session.createQuery( "from A a where a.id like ?" ).setString( 0, 1 ).list();
for( B b : dbA.getBList() )
{
if( null != b.getId() && null != b.getDescription() )
{
System.out.println( b.getDescription() );
}
}
[/Java]
Jetzt gibt mit das Programm aber nicht nur für die ersten 10 B's die Description sondern für alle aus. Dabei dachte ich dass für alle Objekte, die nach dem Batch-Size-Index von 10 kommen, alle Werte später nachgeladen werden und jetzt noch gar nicht bekannt sind.
Wo kann mein Fehler liegen, wo könnte ich mehr über BatchSize nachlesen?
Grüße
Pacal