繁体   English   中英

HQL休眠左连接where子句

[英]HQL hibernate left join where clause

我有一个关于如何用左联接写hql以及休眠中where选项的问题。 我试图在下面的arama函数中编写hql,但结果未显示为输出。

我怎么写。 能为我写吗。 谢谢。 我也分享了我的代码。

这是我的以下代码。

奥格伦奇实体

@Entity
@Table(name = "OGRENCI", schema = "OGRENCI")
public class OGRENCI {

    @Id
    @SequenceGenerator(name = "ActorSeq", sequenceName = "ACTOR_SEQ", allocationSize = 1)
    @GeneratedValue(generator = "ActorSeq", strategy = GenerationType.SEQUENCE)
    @Column(name = "ID")
    private Long Id;

    @Column(name = "AD")
    private String ad;

    @ManyToMany(mappedBy="ogrenciler")  
    Set<Ders> dersler = new HashSet<Ders>();


    public Set<Ders> getMovies() {
        return dersler;
    }

    public void setMovies(Set<Ders> dersler) {
        this.dersler = dersler;
    }

    public OGRENCI() {
        super();
        // TODO Auto-generated constructor stub
    }

    public OGRENCI(String ad) {
        super();
        this.ad = ad;
    }

    public String getAd() {
        return ad;
    }

    public void setName(String ad) {
        this.ad = ad;
    }

}

DERS实体

@Entity
@Table(name = "DERS", schema = "OGRENCI")
public class Ders {

    @Id
    @SequenceGenerator(name = "DersSeq", sequenceName = "Ders_SEQ", allocationSize = 1)
    @GeneratedValue(generator = "DersSeq", strategy = GenerationType.SEQUENCE)
    @Column(name = "ID")
    private Long Id;

    @Column(name = "NAME")
    private String Name;

    @ManyToMany(cascade=CascadeType.PERSIST)
    @JoinTable(name="Ders_Ogrenciler",
      joinColumns={@JoinColumn(name="Ders_ID")},
      inverseJoinColumns={@JoinColumn(name="OGRENCI_ID")}
              ) 
    Set<OGRENCI> ogrenciler = new HashSet<OGRENCI>();

    public Set<OGRENCI> getActors() {
        return ogrenciler;
    }

    public void setActors(Set<OGRENCI> ogrenciler) {
        this.ogrenciler = ogrenciler;
    }

    public Ders() {
        super();
        // TODO Auto-generated constructor stub
    }

    public Ders(String name) {
        super();
        Name = name;
    }

    public String getName() {
        return Name;
    }

    public void setName(String name) {
        Name = name;
    }

}

SQL问题

private static void arama() {
        // TODO Auto-generated method stub

        Scanner in = new Scanner(System.in);
        System.out.println("-----------------------------------------------------------------------");
        System.out.print("Dersin Adını Giriniz :");
        String ders = in.nextLine();

        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction trx = session.getTransaction();

        try {

            trx.begin();
            System.out.println("------------------------KALANLAR-----------------------");
            List ogrenci = session.createQuery("Select o.ad FROM OGRENCI o left join o.dersler ders WHERE ders.id='"+ders+"'").list();

            for (Iterator iterator1 = ogrenci.iterator(); iterator1.hasNext();) {
                OGRENCI ogr = (OGRENCI) iterator1.next();
                System.out.println(ogr.getAd());

            }

            trx.commit();
        } catch (Exception e) {

            if (trx != null)
                trx.rollback();

        } finally {
            session.close();
        }

    }

试试看

Query q= session.createQuery("Select o.ad FROM OGRENCI o left join o.dersler ders WHERE ders.id=:id");
q.setParameter("id",ders);
q.list();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM