如何将查询结果分配给用户标识

时间:2018-04-08 09:05:10

标签: java hibernate

如何将查询结果分配给用户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项目,你可以帮我解决这个问题。

2 个答案:

答案 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());

我解决了萨利姆艾哈迈德。