]
Roberto Ruiz updated HHH-7231:
------------------------------
Attachment: hibernate-inherited-orderby-test.zip
Test case. Requires Maven 3 and Java 6
Execute "mvn test"
@OrderBy fails if order by property is in inherited superclass
--------------------------------------------------------------
Key: HHH-7231
URL:
https://hibernate.onjira.com/browse/HHH-7231
Project: Hibernate ORM
Issue Type: Bug
Components: entity-manager
Affects Versions: 4.1.1
Environment: Java 1.6
Windows XP SP3
Eclipse 3.6
Spring 3.1.1
MySQL (Same error in oracle and HSQLDB)
Reporter: Roberto Ruiz
Attachments: hibernate-inherited-orderby-test.zip
I try to order a Set or List mapped by @ManyToOne using a property that is in the
inherited superclass of the child side.
When I try to recover the Set, the query fails because generated SQL is wrong
Next I write a simplified example (getters an setter ommited):
@Entity
@Table(name="PLACE")
@Inheritance(strategy=InheritanceType.JOINED)
public abstract class Place {
@Id
@Column(name="PLACE_ID")
private Long id;
@Column(name="PLACE_NAME")
private String name;
}
@Entity
@Table(name="LOCALITY")
@PrimaryKeyJoinColumn(name="PLACE_ID",
referencedColumnName="PLACE_ID")
public class Locality extends Place {
@Column(name="LOCALITY_MAJOR")
private String major;
@OneToMany(mappedBy="locality")
@OrderBy("historyCount")
private Set<LocalityHistorical> history;
}
@Entity
@Table(name="PLACE_HIST")
@Inheritance(strategy=InheritanceType.JOINED)
public abstract class PlaceHistorical {
@Id
@Column(name="HIST_PLACE_ID")
private Long id;
@Column(name="HIST_PLACE_NAME")
private String name;
@Column(name="HIST_COUNT")
private Long historyCount;
}
@Entity
@Table(name="LOCALITY_HIST")
@PrimaryKeyJoinColumn(name="HIST_PLACE_ID",
referencedColumnName="HIST_PLACE_ID")
public class LocalityHistorical extends PlaceHistorical {
@ManyToOne(optional=false)
@JoinColumn(name="PLACE_ID")
private Locality locality;
@Column(name="LOCALITY_MAJOR")
private String major;
}
As you may see in the example, the entity "Locality" has a Set called histiry
of "LocalityHistorical". The set is ordered by historyCount which is a field of
the superentity "PlaceHistorical".
The generated SQL is:
select
history0_.PLACE_ID as PLACE3_0_1_,
history0_.HIST_PLACE_ID as HIST2_1_,
history0_.HIST_PLACE_ID as HIST1_2_0_,
history0_1_.HIST_COUNT as HIST2_2_0_,
history0_1_.HIST_PLACE_NAME as HIST3_2_0_,
history0_.PLACE_ID as PLACE3_3_0_,
history0_.LOCALITY_MAJOR as LOCALITY1_3_0_
from
LOCALITY_HIST history0_
inner join
PLACE_HIST history0_1_
on history0_.HIST_PLACE_ID=history0_1_.HIST_PLACE_ID
where
history0_.PLACE_ID=?
order by
history0_.PLACE_HIST.HIST_COUNT asc
The error is in the order by clause which should be "history0_1_.HIST_COUNT"
instead of "history0_.PLACE_HIST.HIST_COUNT"
--
This message is automatically generated by JIRA.
For more information on JIRA, see: