org.mise en veille prolongée.hql.ast.QuerySyntaxException
org.hibernate.hql.ast.QuerySyntaxException:
utilisateurs n'est pas mappé [SÉLECTIONNEZ e-mail, id
From users where email='[email protected]'
ET le mot de passe='asasas']
public ILogin authenticate(Login login) {
System.out.println(login);
System.out.println(login.getEmail());
String query = "SELECT email, id FROM users WHERE email='"
+ login.getEmail() + "' AND password='" + login.getPassword() + "'";
results = getHibernateTemplate().find(query);
System.out.println(results);
return null;
}
J'ai une Connexion de Haricots classe... ici, il suit.
package
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
public class Login {
public Login(){}
private Long id = null;
private String email;
private String password;
public Login(String email, String password)
{
this.email = email;
this.password = password;
}
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
Mon application-context.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" default-autowire="byName"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<!-- Turn on AspectJ @Configurable support -->
<context:spring-configured />
<context:property-placeholder location="classpath*:*.properties" />
<context:component-scan base-package="com.intermedix"/>
<context:annotation-config/>
<!-- Turn on @Autowired, @PostConstruct etc support -->
<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor" />
<bean class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor" />
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="myDataSource" />
<property name="annotatedClasses">
<list>
<value>com.intermedix.domain.Login</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">create</prop>
</props>
</property>
</bean>
<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/spring"/>
<property name="username" value="monty"/>
<property name="password" value="indian"/>
</bean>
<tx:annotation-driven transaction-manager="txManager"/>
<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
</beans>
OriginalL'auteur theJava | 2011-01-10
Vous devez vous connecter pour publier un commentaire.
Qu'est-ce que les "utilisateurs"? Il n'y a rien dans votre config ou un code appelé "utilisateurs", de sorte que Hibernate n'a aucune idée de quoi vous parlez.
Deuxièmement, votre
Login
classe n'est pas annoté avec@Entity
, donc Hibernate est probable en l'ignorant.Donc ajouter l'annotation, et très probablement changer votre requête à:
Pas de. HQL doivent se référer à des entités et propriétés, pas de tables et de colonnes.
comment il serait point à la table des utilisateurs correctement
En annotant
Login
avec@Table(name="users")
. Comment vous attendiez-vous à Hibernate savoir sur leusers
table si vous n'avez pas le dire?alors qu'est-ce que @Entité dans tout devrais-je ajouter @Entity @Table(name="utilisateurs") au-dessus de la Classe de Connexion
OriginalL'auteur skaffman
Même si elle n'appartient pas à votre question:
Ne pas utiliser Hibernate/JPA (Chaîne concatination) !:
Au lieu d'utiliser les requêtes HQL comme des déclarations préparées à l'avance:
Si vous le faites dans votre "style" que vous aurez beaucoup de plaisir avec des Injections SQL!
Suivant: lire l'hibernation de référence sur les requêtes HQL, pour moi, il semble que vous écrivez SQL au lieu de HQL.
OriginalL'auteur Ralph
Semble évidente pour moi : "les utilisateurs n'est pas mappé..."
Soit vous n'avez pas la carte de la table des Utilisateurs, ou vous l'avez correctement configuré.
OriginalL'auteur darioo
Vous avez réellement besoin d'annoter classe de Connexion puisque vous dites (
<property name="annotatedClasses">
) que dans application-context.xml par exemple, comme ceci.OriginalL'auteur user1701556
ICI Form3A est le nom de la classe et le fichier de config est
OriginalL'auteur feel good and programming