2016-04-07 15 views
0

Für ein Projekt Ich möchte ein LEFT JOIN bekommen mit Kriterien arbeiten, aber ich don "t bekommen, was ich willHibernate Kriterien LEFT JOIN

Ich möchte, dies zu tun. Wählen Sie Bücher aus UserBooks LEFT JOIN Bücher, .. .. Aber ich habe nichts

Dies ist, was ich im Moment habe.

@SuppressWarnings("unchecked") 
public List<Books> getBooksByTitle(int userID, String Title) { 
    List<Books> books = null; 

    Configuration cfg = new Configuration(); 
    cfg.configure("hibernate.cfg.xml"); 
    SessionFactory factory = cfg.buildSessionFactory(); 
    Session session = factory.openSession(); 
    Transaction tx = session.beginTransaction(); 

    Criteria c = session.createCriteria(UserBooks.class, "userBooks"); 
    c.setFetchMode("userBooks.book", FetchMode.JOIN); 
    c.createAlias("userBooks.book", "books"); 
    c.setProjection(Projections.property("books")) ; 
    c.add(Restrictions.eq("userBooks.id", userID)); 
    c.add(Restrictions.like("books.title", "%"+ Title + "%")); 

    books = c.list(); 

    for (Books allBooks : (List<Books>)books) { 
       System.out.println(">>>>>" + allBooks.getTitle()); 
    } 

    tx.rollback(); 
    session.close(); 
    factory.close(); 
    return books; 
} 
+0

Welcher Tabelle möchten Sie beitreten? –

Antwort

0

egal habe ich es :)

Criteria c = session.createCriteria(UserBooks.class, "userBooks"); 
    c.createAlias("userBooks.book", "book"); 
    c.setProjection(Projections.property("book")); 
    c.add(Restrictions.eq("userBooks.user.id", userID)); 
    c.add(Restrictions.like("book.title", "%" + Title + "%"));