Winterschlaf, wie man Createalias kreiert?
-
12-09-2019 - |
Frage
@Entity
@Table(name = "BOOKTEST")
@NamedQueries({@NamedQuery(name = "Booktest.findAll", query = "SELECT b FROM Booktest b"), @NamedQuery(name = "Booktest.findById", query = "SELECT b FROM Booktest b WHERE b.id = :id"), @NamedQuery(name = "Booktest.findByBookName", query = "SELECT b FROM Booktest b WHERE b.bookName = :bookName")})
public class Booktest implements Serializable {
@ManyToOne
private Topictest topictestId; //foreign key
@JoinColumn(name = "USERTEST_ID", referencedColumnName = "ID")
@ManyToOne
private Usertest usertestId; //foreign key
}
Wenn ich ausführe
Session.Createcriteria (bookTest.class) .Createalias ("UserStestid", "UserStestid", kriterien.left_join) .list ();
Die SQL_Log zeigt sich immer noch an Wählen Sie * aus BookTest, Usertest statt Wählen Sie * aus dem bookTest links Join Usertest aus Wie bin ich übrig?
Versuchte Non -Sequitor -beide Fälle und ich komme immer noch unten Ohne "links Join"
Hibernate: select this_.ID as ID13_2_, this_.BOOK_NAME as BOOK2_13_2_, this_.TOP
ICTEST_ID as TOPICTEST4_13_2_, this_.USERTEST_ID as USERTEST3_13_2_, usertestid1
_.ID as ID14_0_, usertestid1_.TOPIC_NAME as TOPIC2_14_0_, usertest4_.ID as ID15_
1_, usertest4_.USER_NAME as USER2_15_1_ from BOOKTEST this_, TOPICTEST usertesti
d1_, USERTEST usertest4_ where this_.TOPICTEST_ID=usertestid1_.ID and this_.USER
TEST_ID=usertest4_.ID(+)
Lösung
Versuche dies
session.createCriteria(BookTest.class)
.createAlias("topictestId", "usertestId")
.setFetchMode("topictestId",FetchMode.EAGER)
.list();
Theoretisch sollte dies funktionieren, wenn nicht, wenn nicht, ohne das Aliasing.
Andere Tipps
Diese letzte Funktion ist in der neuen Hibernate -Version deprimiert.https://docs.jboss.org/hibernate/ORM/ORM/5.0/javadocs/org/hibernate/fetchmode.htmlVerwenden Sie FetchMode.join danke
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow