Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Hibernate Annotations documentation bancale ?

15 réponses
Avatar
#cyrille37#
Hello,

Maintenant que mon p'tit projet d'apprentissage fonctionne avec
Hibernate en mapping d=E9clar=E9 dans des fichiers Xml, j'essaye les
Annotations.

Les Tags @Entity et @Table sont bien reconnus.
Par contre le tag @Column ne fonctionne pas : cannot find symbol.

Il est pourtant cit=E9 dans la doc :
http://www.hibernate.org/hib_docs/an...single/#d0e365

Mais effectivement introuvable dans les r=E9f=E9rences :
hibernate-annotations-3.2.0.CR1\hibernate-annotations-3.2.0.CR1\doc\api\ind=
ex.html

Que ce passe-t-il ? Est-ce que les Annotations sont utilisables, ou
faut il attendre une prochaine version ?

Merci de votre aide,
cyrille

10 réponses

1 2
Avatar
#cyrille37#
Les Tags @Entity et @Table sont bien reconnus.
Par contre le tag @Column ne fonctionne pas : cannot find symbol.

Il est pourtant cité dans la doc :
http://www.hibernate.org/hib_docs/an...single/#d0e365

Mais effectivement introuvable dans les références :
hibernate-annotations-3.2.0.CR1hibernate-annotations-3.2.0.CR1docapii ndex.html

Que ce passe-t-il ? Est-ce que les Annotations sont utilisables, ou
faut il attendre une prochaine version ?


bon en fait c'était écrit nul part mais il manquait un import.

j'avais:
import org.hibernate.*;
import org.hibernate.cfg.*;
import org.hibernate.annotations.* ;

et en ajoutant :

import org.hibernate.mapping.*;

les tags sont reconnus.

désolé pour le bruit,
cyrille

Avatar
Marc SIRAMY
#cyrille37# wrote:

Les Tags @Entity et @Table sont bien reconnus.
Par contre le tag @Column ne fonctionne pas : cannot find symbol.

Il est pourtant cité dans la doc :
http://www.hibernate.org/hib_docs/an...single/#d0e365

Mais effectivement introuvable dans les références :
hibernate-annotations-3.2.0.CR1hibernate-annotations-3.2.0.CR1docapiindex.html

Que ce passe-t-il ? Est-ce que les Annotations sont utilisables, ou
faut il attendre une prochaine version ?



bon en fait c'était écrit nul part mais il manquait un import.

j'avais:
import org.hibernate.*;
import org.hibernate.cfg.*;
import org.hibernate.annotations.* ;

et en ajoutant :

import org.hibernate.mapping.*;

les tags sont reconnus.

désolé pour le bruit,
cyrille

pas grave pour le bruit, ta remarque est plutôt pertinente.


Sais tu ce que apportent ces annotations par rapport aux tags XDoclet ?

Marc


Avatar
#cyrille37#

pas grave pour le bruit, ta remarque est plutôt pertinente.

Sais tu ce que apportent ces annotations par rapport aux tags XDoclet ?


Non. Je suis trop débutant pour avoir un avis.
Pour l'instant, pour moi c'est la simplicité : une seule source (le
source ;o) ) et pas d'autres outils à configurer (config+build.xml).

Sinon, pour mon problème, la solution que j'avais trouvé ne
fonctionnait pas. Il y avait toujours des erreurs à la compilation.
La solution qui m'a fait avancer c'est d'avoir défini une "Persistence
Unit / Hibernate" avec NetBeans5.5 et de ne mettre qu'un seul import :
javax.persistence.*;

Maintenant la compilation se passe bien, mais le Runtime est pas
content.

J'ais l'exception : org.hibernate.HibernateException: Hibernate Dialect
must be explicitly set
Alors que le dialect est bien positionné dans hibernate.cfg.xml :

<hibernate-configuration>
<session-factory>
<property
name="connection.datasource">java:comp/env/jdbc/KitchenMysql</property>
<property name="show_sql">true</property>
<property
name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- Mapping files -->
<!-- <mapping resource="User.hbm.xml"/> -->
<!-- ou Mapping Annotations -->
<mapping class="name.cyrille.kitchenonweb.User"/>
</session-factory>
</hibernate-configuration>

Une idée ?

cyrille
PS : C'est pas évident tout ce bazard de config dans tout les sens
(tous ces frameworks ...)

Avatar
Marc SIRAMY
#cyrille37# wrote:


pas grave pour le bruit, ta remarque est plutôt pertinente.

Sais tu ce que apportent ces annotations par rapport aux tags XDoclet ?



Non. Je suis trop débutant pour avoir un avis.
une vague recherche sur Google m'a permis d'avoir un apercu des

annotations hibernate ( " Hiberante 3, Annotations, (Code sample)" ,
http://www.jroller.com/language/RickHigh/20050419?language=en ).
Elles semblent relativement équivalentes sur le principe aux annotations
XDoclet.

Pour l'instant, pour moi c'est la simplicité : une seule source (le
source ;o) ) et pas d'autres outils à configurer (config+build.xml).

Ant est pourtant bien pratique dès que l'application à construire est un

peu complexe. C'est le cas dès que l'application contient des Ejb.
Le build.xml permet de générer un .ear propre.


Sinon, pour mon problème, la solution que j'avais trouvé ne
fonctionnait pas. Il y avait toujours des erreurs à la compilation.
La solution qui m'a fait avancer c'est d'avoir défini une "Persistence
Unit / Hibernate" avec NetBeans5.5 et de ne mettre qu'un seul import :
javax.persistence.*;

Maintenant la compilation se passe bien, mais le Runtime est pas
content.

J'ais l'exception : org.hibernate.HibernateException: Hibernate Dialect
must be explicitly set
Alors que le dialect est bien positionné dans hibernate.cfg.xml :

<hibernate-configuration>
<session-factory>
<property
name="connection.datasource">java:comp/env/jdbc/KitchenMysql</property>
<property name="show_sql">true</property>
<property
name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- Mapping files -->
<!-- <mapping resource="User.hbm.xml"/> -->
<!-- ou Mapping Annotations -->
<mapping class="name.cyrille.kitchenonweb.User"/>
</session-factory>
</hibernate-configuration>

Une idée ?


je n'ai pas ce genre de config sous la main.
AMHA, tu devrais spécifier le dialect MySql au niveau de la dataSource.



cyrille
PS : C'est pas évident tout ce bazard de config dans tout les sens
(tous ces frameworks ...)
Je suis dans l'obligation de m'auto-former à J2EE et je ne te le faits

pas dire (merci l'ETGL et l'inspection de l'apprentissage des Yvelines).

Perso, je devais être en manque de framework puisque je me suis m'y à
bosser là dessus : http://appfuse.org/ .

@+

Marc


Avatar
Marc SIRAMY
Marc SIRAMY wrote:
#cyrille37# wrote:




pas grave pour le bruit, ta remarque est plutôt pertinente.

Sais tu ce que apportent ces annotations par rapport aux tags XDoclet ?



Non. Je suis trop débutant pour avoir un avis.


une vague recherche sur Google m'a permis d'avoir un apercu des
annotations hibernate ( " Hiberante 3, Annotations, (Code sample)" ,
http://www.jroller.com/language/RickHigh/20050419?language=en ).
Elles semblent relativement équivalentes sur le principe aux annotations
XDoclet.


Pour l'instant, pour moi c'est la simplicité : une seule source (le
source ;o) ) et pas d'autres outils à configurer (config+build.xml).



Ant est pourtant bien pratique dès que l'application à construire est un
peu complexe. C'est le cas dès que l'application contient des Ejb.
Le build.xml permet de générer un .ear propre.



Sinon, pour mon problème, la solution que j'avais trouvé ne
fonctionnait pas. Il y avait toujours des erreurs à la compilation.
La solution qui m'a fait avancer c'est d'avoir défini une "Persistence
Unit / Hibernate" avec NetBeans5.5 et de ne mettre qu'un seul import :
javax.persistence.*;

Maintenant la compilation se passe bien, mais le Runtime est pas
content.

J'ais l'exception : org.hibernate.HibernateException: Hibernate Dialect
must be explicitly set
Alors que le dialect est bien positionné dans hibernate.cfg.xml :

<hibernate-configuration>
<session-factory>
<property
name="connection.datasource">java:comp/env/jdbc/KitchenMysql</property>
<property name="show_sql">true</property>
<property
name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- Mapping files -->
<!-- <mapping resource="User.hbm.xml"/> -->
<!-- ou Mapping Annotations -->
<mapping class="name.cyrille.kitchenonweb.User"/>
</session-factory>
</hibernate-configuration>

Une idée ?



j'ai du me tromper dans mon dernier post sur la résolution de ton

erreur. A tout hasard, essaie ceci :

<property name="hibernate.dialect"
value="org.hibernate.dialect.MySQLInnoDBDialect"/>

--
Marc



Avatar
#cyrille37#

Marc SIRAMY wrote:
#cyrille37# wrote:




pas grave pour le bruit, ta remarque est plutôt pertinente.

Sais tu ce que apportent ces annotations par rapport aux tags XDoclet ?



Non. Je suis trop débutant pour avoir un avis.


une vague recherche sur Google m'a permis d'avoir un apercu des
annotations hibernate ( " Hiberante 3, Annotations, (Code sample)" ,
http://www.jroller.com/language/RickHigh/20050419?language=en ).
Elles semblent relativement équivalentes sur le principe aux annotati ons
XDoclet.


Pour l'instant, pour moi c'est la simplicité : une seule source (le
source ;o) ) et pas d'autres outils à configurer (config+build.xml).



Ant est pourtant bien pratique dès que l'application à construire e st un
peu complexe. C'est le cas dès que l'application contient des Ejb.
Le build.xml permet de générer un .ear propre.



Sinon, pour mon problème, la solution que j'avais trouvé ne
fonctionnait pas. Il y avait toujours des erreurs à la compilation.
La solution qui m'a fait avancer c'est d'avoir défini une "Persistence
Unit / Hibernate" avec NetBeans5.5 et de ne mettre qu'un seul import :
javax.persistence.*;

Maintenant la compilation se passe bien, mais le Runtime est pas
content.

J'ais l'exception : org.hibernate.HibernateException: Hibernate Dialect
must be explicitly set
Alors que le dialect est bien positionné dans hibernate.cfg.xml :

<hibernate-configuration>
<session-factory>
<property
name="connection.datasource">java:comp/env/jdbc/KitchenMysql</propert y>
<property name="show_sql">true</property>
<property
name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- Mapping files -->
<!-- <mapping resource="User.hbm.xml"/> -->
<!-- ou Mapping Annotations -->
<mapping class="name.cyrille.kitchenonweb.User"/>
</session-factory>
</hibernate-configuration>

Une idée ?



j'ai du me tromper dans mon dernier post sur la résolution de ton

erreur. A tout hasard, essaie ceci :

<property name="hibernate.dialect"
value="org.hibernate.dialect.MySQLInnoDBDialect"/>

--
Marc


En fait Hibernate Annotations par défaut cherche sa config dans
hibernate.properties au lieu de hibernate.cfg.xml.

du coup j'ai modifié HibernateSessionUtil comme suit :

AnnotationConfiguration annCfg = new AnnotationConfiguration();
// sans cette précision, AnnotationConfiguration cherche ses
directives dans "/hibernate.properties".
annCfg.configure("hibernate.cfg.xml");
sessionFactory = annCfg.buildSessionFactory();

et c'est bon...




Avatar
#cyrille37#

Marc SIRAMY wrote:
#cyrille37# wrote:




pas grave pour le bruit, ta remarque est plutôt pertinente.

Sais tu ce que apportent ces annotations par rapport aux tags XDoclet ?



Non. Je suis trop débutant pour avoir un avis.


une vague recherche sur Google m'a permis d'avoir un apercu des
annotations hibernate ( " Hiberante 3, Annotations, (Code sample)" ,
http://www.jroller.com/language/RickHigh/20050419?language=en ).
Elles semblent relativement équivalentes sur le principe aux annotati ons
XDoclet.


Pour l'instant, pour moi c'est la simplicité : une seule source (le
source ;o) ) et pas d'autres outils à configurer (config+build.xml).



Ant est pourtant bien pratique dès que l'application à construire e st un
peu complexe. C'est le cas dès que l'application contient des Ejb.
Le build.xml permet de générer un .ear propre.



Sinon, pour mon problème, la solution que j'avais trouvé ne
fonctionnait pas. Il y avait toujours des erreurs à la compilation.
La solution qui m'a fait avancer c'est d'avoir défini une "Persistence
Unit / Hibernate" avec NetBeans5.5 et de ne mettre qu'un seul import :
javax.persistence.*;

Maintenant la compilation se passe bien, mais le Runtime est pas
content.

J'ais l'exception : org.hibernate.HibernateException: Hibernate Dialect
must be explicitly set
Alors que le dialect est bien positionné dans hibernate.cfg.xml :

<hibernate-configuration>
<session-factory>
<property
name="connection.datasource">java:comp/env/jdbc/KitchenMysql</propert y>
<property name="show_sql">true</property>
<property
name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- Mapping files -->
<!-- <mapping resource="User.hbm.xml"/> -->
<!-- ou Mapping Annotations -->
<mapping class="name.cyrille.kitchenonweb.User"/>
</session-factory>
</hibernate-configuration>

Une idée ?



j'ai du me tromper dans mon dernier post sur la résolution de ton

erreur. A tout hasard, essaie ceci :

<property name="hibernate.dialect"
value="org.hibernate.dialect.MySQLInnoDBDialect"/>

--
Marc


En fait Hibernate Annotations par défaut cherche sa config dans
hibernate.properties au lieu de hibernate.cfg.xml.

du coup j'ai modifié HibernateSessionUtil comme suit :

AnnotationConfiguration annCfg = new AnnotationConfiguration();
// sans cette précision, AnnotationConfiguration cherche ses
directives dans "/hibernate.properties".
annCfg.configure("hibernate.cfg.xml");
sessionFactory = annCfg.buildSessionFactory();

et c'est bon...




Avatar
#cyrille37#

Les Tags @Entity et @Table sont bien reconnus.
Par contre le tag @Column ne fonctionne pas : cannot find symbol.

Il est pourtant cité dans la doc :
http://www.hibernate.org/hib_docs/an...single/#d0e365

Mais effectivement introuvable dans les références :
hibernate-annotations-3.2.0.CR1hibernate-annotations-3.2.0.CR1docapi index.html

Que ce passe-t-il ? Est-ce que les Annotations sont utilisables, ou
faut il attendre une prochaine version ?


bon en fait c'était écrit nul part mais il manquait un import.

j'avais:
import org.hibernate.*;
import org.hibernate.cfg.*;
import org.hibernate.annotations.* ;

et en ajoutant :

import org.hibernate.mapping.*;

les tags sont reconnus.


Et ben non. J'avais toujours des erreurs.

La seule solution que j'ai trouvé est de créer une "Persistence Unit
/ Hibernate" avec NetBeans5.5 et de remplacer tous les imports
org.hibernate.xxx par un seul import : javax.persistence.*

Comment faire sans "Persistence Unit". Quels sont les imports à
utiliser ?

cyrille


Avatar
Marc SIRAMY
#cyrille37# wrote:

Les Tags @Entity et @Table sont bien reconnus.
Par contre le tag @Column ne fonctionne pas : cannot find symbol.

Il est pourtant cité dans la doc :
http://www.hibernate.org/hib_docs/an...single/#d0e365

Mais effectivement introuvable dans les références :
hibernate-annotations-3.2.0.CR1hibernate-annotations-3.2.0.CR1docapiindex.html

Que ce passe-t-il ? Est-ce que les Annotations sont utilisables, ou
faut il attendre une prochaine version ?



bon en fait c'était écrit nul part mais il manquait un import.

j'avais:
import org.hibernate.*;
import org.hibernate.cfg.*;
import org.hibernate.annotations.* ;

et en ajoutant :

import org.hibernate.mapping.*;

les tags sont reconnus.

désolé pour le bruit,
cyrille

une chose me dérange dans le fait d'utiliser les annotations HIbernate

ou celles du JDK 5.0 ; l'obligation d'ajouter des imports.
Ces imports ne sont pas nécessaires avec xdoclet.


--
Marc


Avatar
alexandre cartapanis
Les Tags @Entity et @Table sont bien reconnus.
Par contre le tag @Column ne fonctionne pas : cannot find symbol.

Il est pourtant cité dans la doc :
http://www.hibernate.org/hib_docs/an...single/#d0e365

Mais effectivement introuvable dans les références :
hibernate-annotations-3.2.0.CR1hibernate-annotations-3.2.0.CR1docap iindex.html

Que ce passe-t-il ? Est-ce que les Annotations sont utilisables, ou
faut il attendre une prochaine version ?


bon en fait c'était écrit nul part mais il manquait un import.

j'avais:
import org.hibernate.*;
import org.hibernate.cfg.*;
import org.hibernate.annotations.* ;

et en ajoutant :

import org.hibernate.mapping.*;

les tags sont reconnus.

désolé pour le bruit,
cyrille



Moi je n'aime pas trop ces notions de xdoclet et annotations. Pour une
raisons toute simple, c'est que ça mélange le code et la configuratio n
(définir le mapping O/R, étant donné que c'est forcement dépendan t de
l'outil de mapping, c'est de la configuration).
Si demain, vous devez faire tourner votre appli avec ibatis ou SQLMap,
vous ferez comment? A moins de disposer d'annotation "générique" de
mapping, la je veux bien. Si quelqu'un connaît un tel outil, qu'il me
fasse signe...

--
Alexandre CARTAPANIS - Responsable Système et Réseau
Email
Gsm. 06 72 07 51 55

Macymed SARL - 9 bvd Kraëmer 13014 Marseille France
Tél. 04 91 48 31 58 - Fax. 04 91 02 36 47
Web http://www.macymed.fr - Email


1 2