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

Hibernate Java Discussion :

Référencer champ de table non gérée par Hibernate


Sujet :

Hibernate Java

  1. #1
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 897
    Points
    1 897
    Par défaut Référencer champ de table non gérée par Hibernate
    Bonjour,

    Une application utilise Hibernate pour gérer les tables ORACLE.

    Une des tables contient un champ qui est une relation avec une table ORACLE non gérée par Hibernate car extérieure à l'application. Comment dire à Hibernate de vérifier cette relation de type OneToOne ?

    Merci d'avance pour vos réponses.

    A+
    La connaissance ne sert que si elle est partagée.
    http://ms2i.net

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Tu veux dire que ce champ est une clé étrangère vers cette autre table non gérée?

    Au mieux tu peux lui attribuer un champ, qui sera une simple valeur numérique sans signification pour ton application.

    Mais franchement mieux vaudrait ajouter cette autre table à ton modèle hibernate pour gérer correctement la relation.

  3. #3
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 897
    Points
    1 897
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Tu veux dire que ce champ est une clé étrangère vers cette autre table non gérée?

    Au mieux tu peux lui attribuer un champ, qui sera une simple valeur numérique sans signification pour ton application.

    Mais franchement mieux vaudrait ajouter cette autre table à ton modèle hibernate pour gérer correctement la relation.
    Pour ajouter cette autre table au modèle Hibernate je ne veux pas devoir créer l'objet POJO correspondant. Est-il possible qu'Hibernate fasse de l'introspection (refactoring) pour connaitre la structure de la table externe à l'application ?

    Merci encore pour ta réponse.

    A+
    La connaissance ne sert que si elle est partagée.
    http://ms2i.net

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    ca n'as pas vraiment de sens, quel est le soucis à créer ce pojo, ça prendre 10 minutes à faire

  5. #5
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 897
    Points
    1 897
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    ca n'as pas vraiment de sens, quel est le soucis à créer ce pojo, ça prendre 10 minutes à faire
    Non car la table contient des dizaines et des dizaines de champs : je sais c'est pas bien mais ce n'est pas mois qui a implémenté cette table pourrie.

    Alors ?
    La connaissance ne sert que si elle est partagée.
    http://ms2i.net

  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Mister Nono Voir le message
    Comment dire à Hibernate de vérifier cette relation de type OneToOne ?
    Que veux tu dire par "vérifier" ?
    De quel type est la propriété dans ton entity "géré" ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 897
    Points
    1 897
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Que veux tu dire par "vérifier" ?
    De quel type est la propriété dans ton entity "géré" ?
    Et bien au lieu de créer le POJO correspondant à cette IMMENSE table (surtout qu'il y en a d'autres à relier), je voudrait qu'Hibernate lise la structure de la table et crée le POJO lui-même.

    A+
    La connaissance ne sert que si elle est partagée.
    http://ms2i.net

  8. #8
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Mister Nono Voir le message
    je voudrait qu'Hibernate lise la structure de la table et crée le POJO lui-même.
    Oups...
    Éventuellement, tu pourrais utiliser une Map<String, Object> ?
    (La première partie serait le nom de la colonne, la deuxième la valeur)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par Mister Nono Voir le message
    Non car la table contient des dizaines et des dizaines de champs : je sais c'est pas bien mais ce n'est pas mois qui a implémenté cette table pourrie.

    Alors ?
    Alors, si tu n'utilise cette table que en read-only, tu n'es pas obligé de mapper tous les champs, juste la clé primaire et éventuellement un ou deux champs texte te permettant de visualiser cet objet

  10. #10
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 897
    Points
    1 897
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Alors, si tu n'utilise cette table que en read-only, tu n'es pas obligé de mapper tous les champs, juste la clé primaire et éventuellement un ou deux champs texte te permettant de visualiser cet objet
    Merci beaucoup pour cette première information encourageante.

    Comment dire à Hibernate que la table en question est en read-only car il faut surtout pas qu'elle soit effacée quand j'active l'option :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <property name="hibernate.hbm2ddl.auto">create</property>
    Merci encore pour ton avis sur ce dernier point.

    Au fait : +1

    A+
    La connaissance ne sert que si elle est partagée.
    http://ms2i.net

  11. #11
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Personnellement, j'utiliserais un "UserType", c'est fait pour traiter les cas non traités par Hibernate.
    Je l'avais utiliser pour un champ mot de passe MD5, mais tu pourrais très bien l'utiliser avec une connexion vers une autre base de données.
    En fait, tu fais ce que tu veux avec...
    L'idée de la Map<String, Object> était là pour palier au fait que tu ne peux pas facilement compiler une classe...

    Bref, à toi de voir
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  12. #12
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par Mister Nono Voir le message
    Merci beaucoup pour cette première information encourageante.

    Comment dire à Hibernate que la table en question est en read-only car il faut surtout pas qu'elle soit effacée quand j'active l'option :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <property name="hibernate.hbm2ddl.auto">create</property>
    Le create ne fait jamais de drop ou de delete => ce n'est pas un problème.

    Pour le reste la notion de read only, faut juste que ton programme ne fasse jamais de save ou de update avec cette entité. Tu pourrais aussi bêtement t'arranger pour que ton utilisateur opérationnel n'aie pas les droits d'écriture sur cette table

    Le champ custom est une option, mais tu aura toujours un problème: comment connaitre la liste des valeur possible vu que c'est une clé étrangère? :-)

  13. #13
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Pour une colonne readonly, tu peux positionner les attributs insertable=false updatable=false
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  14. #14
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Le champ custom est une option, mais tu aura toujours un problème: comment connaitre la liste des valeur possible vu que c'est une clé étrangère? :-)
    Dans la méthode nullSafeGet, le paramètre owner représente l'entity concernée, si elle contient les champs nécessaires, l'opération est triviale, sinon, ça va se compliquer
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  15. #15
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 897
    Points
    1 897
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Le create ne fait jamais de drop ou de delete => ce n'est pas un problème.
    Je suis désolé mais quand je veux réinitialiser la base de données, j'active ce paramètre qui reconstruit toutes les tables (et donc les vide). C'est cela que je dois éviter par ailleurs avec les tables sur lesquelles il n'y as juste qu'une relation (tables en read-only).

    A+
    La connaissance ne sert que si elle est partagée.
    http://ms2i.net

  16. #16
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Ha oui tiens dans mes souvenirs ça ne droppait pas, j'ai du utiliser ça à la seule époqueo où c'était buggué et il manquait les drop

    Personellement, je ne suis pas fan de ce switch donc je ne peux vraiment pas t'aider là dedans. Je préfère lancer les DDL à la main, je déteste quand une application a les moyen de le faire d'elle même. C'est le meilleur moyen de perdre une base en production suite à une erreur de config

Discussions similaires

  1. Réponses: 5
    Dernier message: 05/08/2013, 12h19
  2. Propriété ou méthode non gérée par cet objet
    Par abennis dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/06/2007, 17h59
  3. propriété ou méthode non gérée par cet objet
    Par Elstak dans le forum VBA Access
    Réponses: 2
    Dernier message: 27/05/2007, 21h23
  4. Erreur:Propriété ou méthode non gérée par cet objet.
    Par nodogeid dans le forum VBA Access
    Réponses: 2
    Dernier message: 22/05/2007, 17h08
  5. Impossible d'accéder aux tables non créées par dbo
    Par Pete dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 07/10/2005, 14h01

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