String sql = "from User u left join u.card";
只需要指定本身用于连接的字段,具体连接到哪个表是在实体类中配置好了的
@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY) @JoinColumn(name="card_id",referencedColumnName="name") public Set<Card> getCard() { return card; }
public void testHQL(){ SessionFactory sessionFactory = new AnnotationConfiguration().configure("com/lesson4/lesson4.cfg.xml").buildSessionFactory(); Session session = sessionFactory.openSession(); Transaction tx = session.beginTransaction(); try { String sql = "from User u left join u.card"; Query query = session.createQuery(sql); List<User> list = query.list(); for (User u: list){ System.out.println(u.getName()); } tx.commit(); } catch (Exception e) { tx.rollback(); e.printStackTrace(); }finally{ session.close(); } }