Java Spring Hibernate集成命名查询问题
我是春天的新手。我坚持下面的问题。请帮帮我。 这是我的实体类(使用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
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);