Hibernate Kriterien für inner join, full-entity-Klasse Feld
Meine Entity-Klasse sind
------- A -----------
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name = "NameA")
private String nameA;
public B getBid() {
return b;
}
public void setBid(B bid) {
this.b = bid;
}
public String getNameA() {
return nameA;
}
public void setNameA(String nameA) {
this.nameA = nameA;
}
@JoinColumn(name = "BID", referencedColumnName = "ID")
@ManyToOne(fetch= FetchType.LAZY)
private B b;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
--------------------------------------------
------------------ B -----------------------
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name = "NameB")
private String nameB;
public String getNameB() {
return nameB;
}
public void setNameB(String nameB) {
this.nameB = nameB;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
und
Ich will
stellen Sie diese Abfrage session.createQuery("select a.b from A a").list();
Kriterien, die API ????
Du musst angemeldet sein, um einen Kommentar abzugeben.
Da Sie nicht über die inverse Beziehung, und da die Kriterien nicht zulässt, dass Sie eine andere Person als der root-entity, Sie haben eine Unterabfrage verwenden, aber es ist hässlich:
Wenn Sie hatte die inverse OneToMany-Beziehung von B zu A, Sie würde gerade zu tun haben
BTW, diese nicht dynamisch aufgebaut Abfragen sind besser ausgedrückt mit HQL als mit den Kriterien, die API. Wenn Ihr echte Abfrage ist die, die man fragte, nur mit HQL: es ist besser lesbar und mehr mächtig.