簡體   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