IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Persistance des données Java Discussion :

Java probleme suppression date


Sujet :

Persistance des données Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Collégien
    Inscrit en
    Avril 2019
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Avril 2019
    Messages : 26
    Points : 27
    Points
    27
    Par défaut Java probleme suppression date
    Bonjour, j'aimerais de l'aide pour supprimer des dates en base de données. J'utilise java spring, dbeaver, mariadb et docker.
    La situation :
    J'ai une table "Article" qui contient un comptage de vues (vues des visiteurs).
    Pour se faire, j'ai cette table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TABLE `visitor_info`
    (
        `id_visitor`             varchar(255)  NOT NULL,
        `id_article`             bigint(20)  NOT NULL,
        `date_connection`        datetime(6) NOT NULL,
        PRIMARY KEY (`id_visitor`, `id_article`),
        KEY `FK_id_articleVisitor` (`id_article`),
        CONSTRAINT `FK_id_articleVisitor` FOREIGN KEY (`id_article`) REFERENCES `article` (`id`)
    ) ENGINE = InnoDB
      DEFAULT CHARSET = utf8mb4;
    "id_visitor" est l'IP de l'utilisateur et "id_article" l'id de l'article visité par l'internaute.
    J'ai codé quelque chose (un code exécuté tout les X temps) pour qu'un visiteur ne génère pas des vues sur un même article plus d'une fois par tranche de 24h.
    Si la date stockée en bdd est inférieur à la date en paramètre (+24h de différence) elle doit être supprimée.

    Dans le code ci dessous, ce n'est pas 24h mais 1mn. Et le code "deleteOldVisits()" s'exécute toutes les minutes. C'est pour faciliter le test.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    @Component
    @EnableScheduling
    public class ScheduledTasks {
        @Autowired
        private VisitorInfoDAO visitorInfoDAO;
     
        public ScheduledTasks() {
        }
     
        @Scheduled(cron = "0 * * * * ?")
        public void deleteOldVisits() {
            System.out.println("deleteOldVisits call");
            LocalDateTime cutoffDateTime = LocalDateTime.now().minusMinutes(1);
            this.visitorInfoDAO.deleteByDateConnectionBefore(cutoffDateTime);
        }
    }
     
    @Modifying
        @Query("DELETE FROM VisitorInfo v WHERE v.date_connection <= :cutoffDate")
        void deleteByDateConnectionBefore(@Param("cutoffDate") LocalDateTime cutoffDate);
    Le problème c'est que cela ne marche pas. C'est étrange car à la base, date_connection est un "localdatetime.now()" donc cela signifie qu'il sait faire la conversion tout seul et que cela devrait fonctionner.
    Il arrive a convertir "2023-03-11T11:43:00.011012" (localdatetime.now() dans java) en "2023-03-11 11:43:00" dans la base de données.

    EDIT:
    J'ai essayé aussi sans succès (j'ai renommé date_connection en date car l'automation ne marchait pas) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
            LocalDateTime cutoffDateTime = LocalDateTime.now().minusMinutes(1);
            DateTime cutoffDateTimeb = DateTime.now().minusMinutes(1);
     
            this.visitorInfoDAO.deleteByDateLessThan(cutoffDateTimeb);
            this.visitorInfoDAO.deleteByDateLessThan(cutoffDateTime);
     
        @Modifying
        void deleteByDateLessThan(LocalDateTime localDateTime);
        @Modifying
        void deleteByDateLessThan(DateTime localDateTime);

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Collégien
    Inscrit en
    Avril 2019
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Avril 2019
    Messages : 26
    Points : 27
    Points
    27
    Par défaut
    Problème résolu (ajouter un time zone sur docker et j'avais oublié un @transactional)

Discussions similaires

  1. Probleme de date entre sql est java
    Par logiciel_const dans le forum SQL
    Réponses: 7
    Dernier message: 31/01/2011, 11h20
  2. Problème de date
    Par rh0D'm@n dans le forum Modules
    Réponses: 3
    Dernier message: 11/05/2004, 15h16
  3. Probleme de date
    Par poufouille dans le forum Bases de données
    Réponses: 4
    Dernier message: 19/03/2004, 14h19
  4. probleme de date (toujours et encore des dates)
    Par Yannesco dans le forum SQL
    Réponses: 3
    Dernier message: 02/02/2004, 19h04
  5. Probleme de date
    Par danuz dans le forum XMLRAD
    Réponses: 3
    Dernier message: 24/09/2003, 15h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo