2016-09-19 7 views
0

ich Mysql-Datenbank verwenden und haben zwei Tabellen chapter und chapter_title_1 gibt es eine fk chapter_id in Tabelle chapter_title_1 Bezug auf Tabelle chapter.Hibernate Kriterien Abfrage Reihenfolge von Tabellenfeld beitreten

table chaptertable chapter_title_1

Zwei Entitätsklasse sind ChapterEntity.class siehe Tabelle chapter und ChapterTitle1Entity.class siehe Tabelle chapter_title_1. Es gibt eine List<ChapterTitle1Entity> chapterTitle1EntityList in ChapterEntity.class, die mit @OneToMany annotiert ist. Ich möchte eine Liste von ChapterEntity von ChapterEntity.sequenceasc in jedem Element der ChapterEntity von ChapterTitle1Entity.sequenceab bestellt und eine Liste der ChapterTitle1Entity bestellt bekommen.

In meiner ADO-Schicht verwende ich Kriterien, um meine Datenbank abzufragen. Ich verwende den folgenden Code, um die Liste zu erhalten:

Criteria criteria = session().createCriteria(ChapterEntity.class, "chapter"); 
criteria.createAlias("chapter.chapterTitle1EntityList", "title1List"); 
criteria.addOrder(Order.asc("chapter.sequence")). 
     addOrder(Order.desc("title1List.sequence")); 
List<ChapterEntity> chapterEntityList = criteria.list(); 
return chapterEntityList; 

aber egal, es ist addOrder(Order.desc("title1List.sequence") oder addOrder(Order.asc("title1List.sequence"), die Reihenfolge der Liste ChapterTitle1Entity bleiben gleich.

Antwort

0

Sie können einfach tun:

ChapterEntity.class 

@OneToMany(fetch=FetchType.EAGER , mappedBy="ChapterEntity") 
@OrderBy("sequence Desc") 
List<ChapterTitle1Entity> chapterTitle1EntityList; 

Aber der Code wird für die Liste globle werden.

+0

Vielen Dank, aber die peinliche Sache ist, dass ich es auch Reihenfolge von 'Sequenz asc 'manchmal wollen, so verwende ich Hibernate-Kriterien, um meine Datenbank abzufragen. –

+0

Ja, es wird funktionieren, wenn Sie Ihre angegebenen Kriterien verwenden. Jetzt brauchen Sie keinen Alias ​​mehr zu erstellen, verwenden Sie einfache Kriterien mit Order.asc ("chapter.sequence"). – Gokul

+1

Ich werde es wieder versuchen, danke für Ihre Beratung –