如何将查询结果分配给用户ID。
我的代码在这里
KullaniciBean.java
public String girisKontrol(){
SessionFactory factory = HibernateUtil.getSessionFactory();
Session session = factory.openSession();
session.getTransaction();
List<Kullanici> list = session.createSQLQuery("select * from kullanici where kadi='" + kullanici.getKadi() + "' and ksifre='" + kullanici.getKsifre() + "'").list();
SQLQuery kuid = session.createSQLQuery("select id from kullanici where kadi='" + kullanici.getKadi() + "' and ksifre='" + kullanici.getKsifre() + "'");
kullanici.setId(kuid); //PROBLEM line
if (list.size()>0){
return "gorevSayfasi";
}else {
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, "user not found", ""));
}
session.beginTransaction();
session.getTransaction().commit();
session.close();
return null;
}
kullanici.java
public class Kullanici implements java.io.Serializable {
private Integer id;
private String kadi;
private Integer ksifre;
private Set gorevs = new HashSet(0);
private Set kullanicirols = new HashSet(0);
public Kullanici() {
}
public Kullanici(String kadi, Integer ksifre, Set gorevs, Set kullanicirols) {
this.kadi = kadi;
this.ksifre = ksifre;
this.gorevs = gorevs;
this.kullanicirols = kullanicirols;
}
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
public String getKadi() {
return this.kadi;
}
public void setKadi(String kadi) {
this.kadi = kadi;
}
public Integer getKsifre() {
return this.ksifre;
}
gorevSayfasi.xhtml
<h:panelGrid columns="2">
<h:outputText value="id"/>
<h:inputText value="#{kullaniciBean.kullanici.id}"/>//PROBLEM line
<h:outputText value="Kullanici Adi"/>
<h:inputText value="#{kullaniciBean.kullanici.kadi}"/>
<h:outputText value="Sifre"/>
<h:inputText value="#{kullaniciBean.kullanici.ksifre}"/>
</h:panelGrid>
我想将查询结果分配给kullanici.id
(在线用户ID)。我不知道我怎么能这样。这是我的第一个Java Hibernate项目,你可以帮我解决这个问题。
答案 0 :(得分:0)
public String girisKontrol(){
SessionFactory factory = HibernateUtil.getSessionFactory();
Session session = factory.openSession();
session.getTransaction();
List<Kullanici> list = session.createSQLQuery("select * from kullanici where kadi='" + kullanici.getKadi() + "' and ksifre='" + kullanici.getKsifre() + "'").list();
Query kuid = session.createQuery("select id from kullanici where kadi='" + kullanici.getKadi() + "' and ksifre='" + kullanici.getKsifre() + "'");
//-----------------solution------------------------
kullanici.setId((Integer) kuid.uniqueResult());
if (list.size()>0){
return "gorevSayfasi";
}else {
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, "user not found", ""));
}
session.beginTransaction();
session.getTransaction().commit();
session.close();
return null;
}
确保查询仅返回单个结果。如果有多个匹配结果,则会抛出NonUniqueResultException
。 (因此query.setMaxResults(1);
会更合适。)
答案 1 :(得分:0)
SQLQuery kuid = session.createSQLQuery("select id from kullanici where kadi='" + kullanici.getKadi() + "' and ksifre='" + kullanici.getKsifre() + "'");
List<Kullanici> list = kuid.list();
kullanici.setId((Integer) kuid.uniqueResult());
我解决了萨利姆艾哈迈德。