0
votes

JPA @query Annotation pour la requête de mise à jour (Oracle SQL Developer) - Org.hibernate.Exception.GenericjdbceXception: Impossible d'exécuter la requête

J'ai un fichier de référentiel partagé le code source pour la même classe et une classe de contrôleur à travers laquelle je fais un appel à cette fonction @Query pour une instruction de mise à jour. Je souhaite mettre à jour une carte de colonne dans ma base de données Oracle pour laquelle j'ai écrit JPA Update @Quisery et défini la fonction dans l'un des fichiers de référentiel. Par conséquent, la création d'un appel de l'une de mes catégories de contrôleur ne peut pas exécuter la requête.

Fichier de référentiel strong> P>

package com.sid.demo.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;


@Entity
@Table(name="user_registration")
public class hindalco_model
{
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Id
    @Column(name="user_id")
    private int user_id;

    @Column(name="user_name")
    private String user_name;

    @Column(name="email")
    private String email;

    @Column(name="password")
    private String password;

    public int getUser_id() {
        return user_id;
    }

    public void setUser_id(int user_id) {
        this.user_id = user_id;
    }

    public String getUser_name() {
        return user_name;
    }

    public void setUser_name(String user_name) {
        this.user_name = user_name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }



    @Override
    public String toString() {
        return "hindalco_model [user_id=" + user_id + ", user_name=" + user_name + ", email=" + email + ", password="
                + password +"]";
    }



}


0 commentaires

3 Réponses :


2
votes
@Transactional
@Modifying(clearAutomatically = true)
@Query(value="update USER_REGISTRATION set password = ?1 WHERE user_name = ?2 and email = ?3",nativeQuery=true)
void findbyuser_update(String password,String user_name,String email);   
The @Modifying annotation is used to enhance the @Query annotation to execute not only SELECT queries but also INSERT, UPDATE, DELETE, and even DDL queries.

4 commentaires

Hibernate: Mettre à jour la base de données_Name.User_Table Set Mot de passe =? Où user_name =? 2019-03-13 11: 54: 55.183 Avertissement 26760 --- [NIO-8080-EXEC-6] OHENGINE.JDBC.SPI.SQLETHELLER: Erreur SQL: 1002, SQLSTATE: 24000 2019-03-13 11:54: 55.183 Erreur 26760 --- [NIO-8080-EXEC-6] OHENGINE.JDBC.SPI.SQExceptionHelper: ORA-01002: Fetch hors de séquence


@Samuelbarkley Bonjour, s'il vous plaît partagez votre requête mise à jour que vous avez écrite


@TransAderal @MODIFIFIER (CLEARAUTOMATIF = TRUE) @QUERY (VALEUR = "Mettre à jour MINES.HMG_ZEPHYR_USERS SET PASSWORT =: Mot de passe Où User_Name =: nom_sutilisateur", natifquery = true) Liste FindByuser_update (@param ("mot de passe") , Chaîne user_name);


@Samuelbarkley Update La requête ne reviendra pas de liste alors changez-la en annulation et réessayez si cela vous aide alors vous devrez peut-être définir une autocommande sur false



2
votes

Pour modifier les requêtes (mise à jour, supprimer, insérer) Vous devez utiliser l'annotation @Modification code>.

En outre, votre requête ne renvoie rien afin que votre méthode devait probablement retourner vide code>. p>

et bien que cela ne soit pas nécessaire, il est toujours une bonne idée de nommer une méthode en fonction de ce qu'elle fait en réalité. p>

Tout cela se traduit par: P >

@Modifying
@Query(value="update USER_REGISTRATION set password = :password WHERE user_name = :user_name and email = :email",nativeQuery=true)
void updatePassword(@Param("password") String password,String user_name,String email);   


1 commentaires

Hibernate: Mettez à jour le mot de passe défini Ss.SID =? Où user_name =? 2019-03-13 11: 54: 55.183 Avertissement 26760 --- [NIO-8080-EXEC-6] OHENGINE.JDBC.SPI.SQLETHELLER: Erreur SQL: 1002, SQLSTATE: 24000 2019-03-13 11:54: 55.183 Erreur 26760 --- [NIO-8080-EXEC-6] OHENGINE.JDBC.SPI.SQExceptionHelper: ORA-01002: Fetch hors de séquence



0
votes

Normalement, le flux est comme contrôleur -> service -> dao . Vous pouvez donc créer un service qui appellera le dao / référentiel respectif. En outre, veuillez vérifier Ce lien .


0 commentaires