Ferran Maylinch
unread,May 27, 2012, 9:19:42 PM5/27/12Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to quer...@googlegroups.com
Hello,
I've been playing around with PathBuilder and fetch() in an scenario where I have two entities (User and Device) with a OneToOne relation between them.
I started with a simple query where I retrieve users with an english (en) device:
QUser user = Quser.user;
List<User> users = query.from(user)
.where(user.device.language.eq("en"))
.list(user);
Then I wanted to fetch Device properties so I did:
QDevice device = QDevice.device;
List<User> users = query.from(user)
.innerJoin(user.device, device).fetch()
.where(device.language.eq("en"))
.list(user);
Then I tried to introduce a PathBuilder but I don't know how to use fetch:
PathBuilder<User> devicePath = new PathBuilder<User>(User.class, "device");
List<User> users = query.from(user)
.innerJoin(devicePath).fetch() <----- This join doesn't work
.where(devicePath.get("language", String.class).eq("en"))
.list(user);
That last query produces this error:
Exception in thread "main" org.hibernate.hql.ast.QuerySyntaxException: Path expected for join!
[select user from may.tests.User user inner join User device where device.language = :a1]
It should say inner join Device but it says inner join User.
What am I doing wrong?
Thank you!
Ferran