Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring Hibernate集成命名查询问题_Java_Spring_Hibernate_Spring Mvc - Fatal编程技术网

Java Spring Hibernate集成命名查询问题

Java Spring Hibernate集成命名查询问题,java,spring,hibernate,spring-mvc,Java,Spring,Hibernate,Spring Mvc,我是春天的新手。我坚持下面的问题。请帮帮我。 这是我的实体类(使用Hibernate): 这是我的刀 package com.demo.dao; import java.util.ArrayList; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import com.demo.mo

我是春天的新手。我坚持下面的问题。请帮帮我。 这是我的实体类(使用Hibernate):

这是我的刀

package com.demo.dao;

import java.util.ArrayList;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;

import com.demo.model.Login;

public class LoginDAO {

    private SessionFactory sessionFactory;

    public void setSessionFactory(SessionFactory sessionFactory){
        this.sessionFactory = sessionFactory;
    }
    public boolean validateLogin(Login login){
        System.out.println("login object");
        String userName = login.getUserName();
        String password = login.getPassword();

        System.out.println("user name is" + userName);
        Session session = sessionFactory.openSession();
        Transaction tx = session.beginTransaction();

        Query query1 = session.getNamedQuery("getPassword");
        query1.setString("username", userName);

        ArrayList<Login> loginList = (ArrayList)query1.list();
        System.out.println("list is" + loginList);

        String pwdfrmdb = null;
        for(Login l:loginList){
            System.out.println("Inside loop");
            pwdfrmdb = l.getPassword();
        }
        System.out.println("password from database" + pwdfrmdb + "password entered" + password);
        if(password.equals(pwdfrmdb)){
            return true;
        }
        return false;
    }
}

this is my configuration.

        <context:component-scan base-package="com.demo"/>
        <!-- Define Datasource -->
        <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
            <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
            <property name="url" value="jdbc:oracle:thin:@localhost:1521:xe"/>
            <property name="username" value="xxx"/>
            <property name="password" value="yyy"/>
        </bean>

        <!-- Define SessionFactory -->
        <bean id="hibernateSessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
            <property name="dataSource" ref="dataSource"/>
            <property name="hibernateProperties">
                <props>
                    <prop key="hibernate.dialect">org.hibernate.dialect.OracleDialect
                    </prop>
                    <prop key="hibernate.show_sql">true</prop>
                </props>
            </property>
            <property name="annotatedClasses">
                <list>
                      <value>com.demo.model.Login</value>
                 </list>
        </property>
        </bean>


        <bean id="logindao" class="com.demo.dao.LoginDAO">
            <property name="sessionFactory" ref="hibernateSessionFactory"/>
        </bean>

        <bean id="login" class="com.demo.model.Login"/>

对于使用命名参数时的命名查询,请尝试按以下方式设置参数:

Query query1 = session.getNamedQuery("getPassword");
query1.setParameter("username", userName);

这应该有帮助

它也不起作用@Vivek SinghAre你有任何例外,没有任何例外@Vivek SinghDid检查用户名是否与数据库值匹配。我的意思是存在一个具有相同用户名的行。问题是我在数据库中创建的列是char而不是varchar2。在对数据类型进行倒角之后,我可以得到结果。谢谢你的帮助@韦克·辛格
before validation
login object
user name is a
Hibernate: select login0_.username as username1_0_, login0_.password as password2_0_ from myuser login0_ where login0_.username=?
list is[]
password from databasenullpassword enteredb
Query query1 = session.getNamedQuery("getPassword");
query1.setParameter("username", userName);