[hibernate-issues] [Hibernate-JIRA] Created: (HHH-7231) @OrderBy fails if order by property is in inherited superclass

Roberto Ruiz (JIRA) noreply at atlassian.com
Sun Apr 8 16:09:48 EDT 2012


@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


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: http://www.atlassian.com/software/jira

        


More information about the hibernate-issues mailing list