[英]to write inner join in hibernate
我有三類用戶,部門和職務
User.java
public class User implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long userId;
@Column(name="emailId")
private String emailId;
@Column(name="userName")
private String userName;
@Column(name="address")
private String address;
@Column(name="mobNo")
private BigDecimal mobNo;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "deptId")
private Department department;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "desgId")
private Designation designation;
@Column(name="grpId")
private int grpId ;
@Column(name="userLevel")
private int userLevel ;
@Column(name="upw1")
private String upw1 ;
@Column(name="upw2")
private String upw2 ;
@Column(name="upw3")
private String upw3 ;
@Column(name="createdBy")
private String createdBy ;
@Column(name="creationDate")
private Timestamp creationDate;
@Column(name="loginStatus")
private String loginStatus;
@Column(name="hintId")
private int hintId ;
@Column(name="hintAns")
private String hintAns ;
@Column(name="otp")
private String otp ;
}
Department.java
public class Department implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int deptid;
@Column(name="deptnm")
private String deptnm;
@Column(name="shrtnm")
private String shrtnm;
@Column(name="creationdt")
private Timestamp creationdt;
@Column(name="status")
private String status;
}
Designation.java
public class Designation implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int desgid;
@Column(name="desgnm")
private String desgnm;
@Column(name="shrtnm")
private String shrtnm;
@Column(name="creationdt")
private Timestamp creationdt;
@Column(name="status")
private String status;
public Designation() {
}
}
SQL
select u.username, u.mobno, dp.deptnm, ds.desgnm, u.loginstatus from usermst u
inner join deptmst dp ON u.deptid=dp.deptid
INNER JOIN desigmst ds on u.desgid=ds.desgid
我想寫關於它的查詢如何在休眠狀態下寫這個SQL查詢? 我按條件嘗試過,但無法正常工作
在這種情況下,您實際上並不需要hql連接,只需瀏覽部門和名稱關聯即可。 如果您確實想要將結果作為數組的集合,請嘗試此操作
select
u.username, u.mobno, u.department.deptnm, u.designation.desgnm, u.loginstatus
from
User u
使用這樣的查詢
Query query=sessionFactory.getCurrentSession().createQuery("select u.userName, u.mobNo, u.department.deptnm, u.designation.desgnm, " + "u.loginStatus from User u");
List<Object[]> list=query.list();
但是如果您只想獲取用戶列表
Query query=sessionFactory.getCurrentSession().createQuery("from User u");
List<User> list=query.list();
你這樣嘗試嗎?
String query = "select u.username, u.mobno,
u.loginstatus, dp.deptnm, ds.desgnm from USERMST
u, DEPTMST dp, DESIGMST ds where
u.deptid=dp.deptid and u.desgid=ds.desgid";
SQLQuery query = session.createSQLQuery(query);
query.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);
List data = query.list();
for (Object object : data) {
Map row = (Map) object;
sysout(row.get("username"));
//similar-way all the values
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.