我有DLawUserMaster表,它有UserID,LoginId和密码字段。其中UserId和LoginId是复合键。当用户尝试使用userID和密码登录时,我想验证用户并获取userID以将其存储在会话中以便在应用程序中进一步使用。
我试图在netbeans HQL查询编辑器中使用查询获取userID,如下所示。
从DLawUserMaster用户中选择count(*),其中user.id.loginId ='admin'和user.password ='admin'
从DLawUserMaster用户中选择count(user.id.loginId),其中user.id.loginId ='admin'和user.password ='admin'
从DLawUserMaster用户中选择user.id.userId,其中user.id.loginId ='admin'和user.password ='admin'
空白表示空,但显示已选择1行。
这是代码 UserMaster.java
public class DLawUserMaster implements java.io.Serializable {
private DLawUserMasterId id;
private String userFirstName;
private String userMiddleName;
private String userLastName;
private String password;
public DLawUserMaster() {
}
public DLawUserMaster(DLawUserMasterId id, String userFirstName, String userMiddleName, String userLastName, String password, String address1, String address2, String address3, String city, String state, String pincode, String mobileNo, String stdCode, String phoneNo, String emailId, String hintQuestion, String hintAnswer, Date registrationDate, Date expiryDate, Boolean activate, Integer noOfClientAllowed, Date createdDate, Date modifiedDate) {
this.id = id;
this.userFirstName = userFirstName;
this.userMiddleName = userMiddleName;
this.userLastName = userLastName;
}
public DLawUserMasterId getId() {
return this.id;
}
public void setId(DLawUserMasterId id) {
this.id = id;
}
public String getUserFirstName() {
return this.userFirstName;
}
public void setUserFirstName(String userFirstName) {
this.userFirstName = userFirstName;
}
public String getUserMiddleName() {
return this.userMiddleName;
}
public void setUserMiddleName(String userMiddleName) {
this.userMiddleName = userMiddleName;
}
public String getUserLastName() {
return this.userLastName;
}
public void setUserLastName(String userLastName) {
this.userLastName = userLastName;
}
public String getPassword() {
return this.password;
}
public void setPassword(String password) {
this.password = password;
}
}
UserMasterID.java
public class DLawUserMasterId implements java.io.Serializable {
private long userId;
private String loginId;
public DLawUserMasterId() {
}
public DLawUserMasterId(long userId, String loginId) {
this.userId = userId;
this.loginId = loginId;
}
public long getUserId() {
return this.userId;
}
public void setUserId(long userId) {
this.userId = userId;
}
public String getLoginId() {
return this.loginId;
}
public void setLoginId(String loginId) {
this.loginId = loginId;
}
public boolean equals(Object other) {
if ( (this == other ) ) return true;
if ( (other == null ) ) return false;
if ( !(other instanceof DLawUserMasterId) ) return false;
DLawUserMasterId castOther = ( DLawUserMasterId ) other;
return (this.getUserId()==castOther.getUserId())
&& ( (this.getLoginId()==castOther.getLoginId()) || ( this.getLoginId()!=null && castOther.getLoginId()!=null && this.getLoginId().equals(castOther.getLoginId()) ) );
}
public int hashCode() {
int result = 17;
result = 37 * result + (int) this.getUserId();
result = 37 * result + ( getLoginId() == null ? 0 : this.getLoginId().hashCode() );
return result;
}
}
任何人都可以给我建议获取userID值。还有关于如何在其中使用计数。
答案 0 :(得分:0)
netbeans显示的第一件事
Long | Long | Long | Char
Blank | Blank | Blank | Blank
无关紧要,因为当你使用
时它会返回正确的值查询q = session.createQuery(SQL_QUERY); list = q.list()
列表中的将返回不计数。
其次,当我们使用复合键时,我们使用bean
中定义的主键类对象如果您需要通过查询结果 从DLawClientMaster客户端中选择client.id.clientId,其中client.id.userId ='1',client.id.clientId ='1'
如果您使用的是标准API,那么
Criteria criteria = session.createCriteria(DLawClientMaster.class);
criteria.add(Restrictions.eq("id.userId", client.getId().getUserId()));
criteria.setProjection(Projections.max("id.clientId"));
List list = criteria.list();
由于