Je tente d'exécuter une requête dans Hibernate qui ressemble àmise à jour et une sélection dans Hibernate requête
private void setFailedLogins(String user_id) throws Exception {
this.openDBTransaction();
Query query = session.createQuery(
"UPDATE User SET loginDate= CURRENT_TIMESTAMP, loginAttempts=(SELECT COUNT(*) FROM loginHistory WHERE user_id=:user_id AND response!=:response AND TIMESTAMPDIFF(MINUTE,valTime,CURRENT_TIMESTAMP) <= 30*24*60) WHERE user_id=:user_id"
);
query.setParameter("user_id", user_id);
query.setParameter("response", "OK");
int result = query.executeUpdate();
this.closeDBTransaction();
}
loginAttempts
comptage est correct, mais alors mettre à jour la requête est mise à jour ne loginAttempts
avec cette valeur
supplémentaires informations concernant coup Hibernate
propriétés Hibernate
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.c3p0.min_size">${hibernate.c3p0.min_size}</prop>
<prop key="hibernate.c3p0.max_size">${hibernate.c3p0.max_size}</prop>
<prop key="hibernate.c3p0.timeout">${hibernate.c3p0.timeout}</prop>
<prop key="hibernate.c3p0.max_statements">${hibernate.c3p0.max_statements}</prop>
<prop key="hibernate.c3p0.idle_test_period">${hibernate.c3p0.idle_test_period}</prop>
<!-- Show and print nice SQL on stdout -->
<prop key="show_sql">${hibernate.show_sql}</prop>
<prop key="format_sql">${hibernate.format_sql}</prop>
<prop key="use_sql_comments">${hibernate.use_sql_comments}</prop>
<prop key="hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
<prop key="hibernate.connection.url">jdbc:mysql://localhost:3306/mydb</prop>
<prop key="hibernate.connection.driver_class">com.mysql.jdbc.Driver</prop>
</props>
</property>
hibernate.hib_domain_package=com.retro.app.domain
hibernate.connection.driver_class = com.mysql.jdbc.Driver
hibernate.connection.url = jdbc:mysql://localhost:3306/mydb?zeroDateTimeBehavior=convertToNull
hibernate.connection.username = ******
hibernate.connection.password = ******
hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
hibernate.c3p0.min_size=8
hibernate.c3p0.max_size=20
hibernate.c3p0.timeout=300
hibernate.c3p0.max_statements=40
hibernate.c3p0.idle_test_period=3000
hibernate.show_sql=false
hibernate.format_sql=false
hibernate.use_sql_comments=false
hibernate.hbm2ddl.auto=create
Side note: Quand je change requête à quelque chose de simple comme:
"UPDATE User SET loginDate= CURRENT_TIMESTAMP, loginAttempts=66 WHERE user_id='USER_3000'"
Update ne prend aucune action sur une base de données.
Une idée?
Avez-vous une transaction ouverte? Si oui, vérifiez que Session.commit() est appel. Sinon, vérifiez comment la propriété AutoCommit est définie, la stratégie par défaut de mise en veille prolongée est false si je ne me trompe pas. –
@BaptisteBeauvais Je ne suis pas sûr à ce sujet car je suis nouveau à Hibernate. Pensé qu'il sera facile car il utilise PDO en PHP – JackTheKnife
Ce n'est pas vraiment plus compliqué, pouvez-vous fournir votre configuration d'hibernation et la méthode complète où vous appelez la requête s'il vous plaît, pour voir si cela confirme ce que je pense. –