Patrick Linskey commented on OPENJPA-162:

I believe that the issue is that the field is not in the current fetch 
configuration; i.e., it's a lazy relationship. The ID field will clearly be 
part of the instance that is selected , but when you're selecting Messages, not 
Threads (or whatever it is that contains Messages).

What happens if you just say '@OrderBy' and leave out the string argument? 
According to 9.1.28 of the spec, if you just specify @OrderBy and nothing else, 
the ordering will be ascending by the pk of the associated records, which 
happens to be what you want.

> @OrderBy on @OneToMany does not allow ordering by @Id value
> -----------------------------------------------------------
>                 Key: OPENJPA-162
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-162
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: jpa
>    Affects Versions: 0.9.6
>         Environment: Using PostgreSQL 8.1 as the database
>            Reporter: Nick Johnson
> Using the following annotation:
>    @OneToMany(mappedBy="root", fetch=FetchType.LAZY)
>     @OrderBy("objectId ASC")
>     private List<Message> messages;
> I get the exception "Cannot order 
> "net.spatula.tally_ho.model.MessageRoot.messages" on "objectId", because that 
> field is not in the default fetch group.  You can only order on fields that 
> will be selected when the related object is loaded."
> I should certainly hope that the primary key of the related object is going 
> to be selected when the object is loaded:
>     @Id
>     @Column(name = "object_id")
>     private long objectId;

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

Reply via email to