gpt4 book ai didi

java - HQL hibernate 左连接 where 子句

转载 作者:行者123 更新时间:2023-12-02 02:50:30 25 4
gpt4 key购买 nike

我有一个关于如何在 hibernate 中使用 left join 和 where 选项编写 hql 的问题。我尝试在下面的 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();

关于java - HQL hibernate 左连接 where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43924850/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com