[ https://issues.apache.org/jira/browse/OPENJPA-1627?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12858525#action_12858525 ]
Michael McGovern commented on OPENJPA-1627: ------------------------------------------- Fay - thanks - that works very well. _________________________________________________________________ Need a new place to live? Find it on Domain.com.au http://clk.atdmt.com/NMN/go/157631292/direct/01/ > ORderBy with @ElementJoinColumn and EmbeddedId uses wrong columns in SQL > ------------------------------------------------------------------------ > > Key: OPENJPA-1627 > URL: https://issues.apache.org/jira/browse/OPENJPA-1627 > Project: OpenJPA > Issue Type: Bug > Components: sql > Affects Versions: 2.0.0-beta3 > Environment: Windows 7 32 bit / Oracle XE > Reporter: Michael McGovern > Assignee: Fay Wang > Attachments: OPENJPA-1627.patch > > > Typical bank example, Account with Transactions. It is a legacy db so > Transaction has compound key - represented by TransactionId class. > The problem is that the order by in the generated SQL is for columns mapped > in the transaction entity NOT the TransacionId as expected. > So the Account class has the following fragment.... > @OneToMany(fetch = FetchType.LAZY, cascade = {CascadeType.PERSIST}) > @ElementJoinColumn(name="maccno", referencedColumnName="maccno") > @OrderBy(value = "_id._processDate ASC, _id._tranSequenceNumber ASC") > private LinkedList<Transaction> _transactions; > _processDate and _tranSequenceNumber are defined in the TransactionId class. > Transaction has the following fragment.... > @EmbeddedId > private TransactionId _id; > > @Column(name = "mtrancde") > private int _transactionCode; > > @Column(name = "mamount") > private BigDecimal _amount; > > @Column(name = "mdesc") > private String _description; > > @Column(name = "mactdate") > private Date _actualDate; > > @Column(name = "mbranch") > private int _branch; > And TransactionId defines the primary key columns.... > @Embeddable > public class TransactionId { > > @Column(name = "maccno") > private String _accountNumber; > > @Column(name = "mprocdate") > private Date _processDate; > > @Column(name = "mtranseqno") > private int _tranSequenceNumber; > However the generated SQL is doing order by on columns mapped in Transaction: > executing prepstmnt 23188098 SELECT t0.maccno, t0.mprocdate, t0.mtranseqno, > t0.mactdate, t0.mamount, t0.mbranch, t0.mchqcash, t0.mdesc, > t0.mtmnlno, t0.mtrancde, t0.mtrnfeed > FROM transaction t0 > WHERE t0.maccno = ? > ORDER BY t0.mamount ASC, t0.mbranch ASC [params=(String) 000734123] > (no idea why it chose mamount, mbranch) > The last line should be: > ORDER BY t0.mprocdate ASC, t0.mtranseqno ASC [params=(String) 000734123] > Thanks > Michael -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.