Bonsoir,
Alors voila je cherche à faire un appli de visualisation de schéma de bases de données en utilisant Hibernate.
Pour cela j'ai donc 3 entités : Table, Column et Constraint.
Mon problème vient d'une relation ManyToOne entre Constrait et Column :
IllegalArgumentException occurred while calling setter of gd.app.model.Constraint.column
Voici le fichier de mapping Column (celui pour postgresql) :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 19 mars 2012 11:48:49 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
<class name="gd.app.model.Column">
<subselect>
SELECT table_name as table, column_name as name, data_type
as type
FROM information_schema.columns
WHERE table_schema='public'
ORDER BY ordinal_position ASC
</subselect>
<composite-id>
<key-property name="name" type="java.lang.String"
column="NAME" />
<key-many-to-one name="table" class="gd.app.model.Table"
column="TABLE" />
</composite-id>
[...........]
<set name="constraints" inverse="true" lazy="true">
<key>
<column name="column" />
<column name="table" />
</key>
<one-to-many class="gd.app.model.Constraint" />
</set>
</class>
</hibernate-mapping> |
Et celui de Constraint :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 19 mars 2012 11:48:49 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
<class name="gd.app.model.Constraint">
<subselect>
SELECT c.constraint_name as name, c.table_name as table,
c.constraint_type
as type, cu.column_name as column,
rc.unique_constraint_name as
references, cu.table_name as
references_table
FROM
information_schema.table_constraints c
INNER JOIN
information_schema.constraint_column_usage cu ON
(c.constraint_name =
cu.constraint_name)
LEFT OUTER JOIN
information_schema.referential_constraints rc ON
(c.constraint_name =
rc.constraint_name)
WHERE c.constraint_schema='public'
</subselect>
<composite-id>
<key-property name="name" type="java.lang.String"
column="NAME" />
<key-many-to-one name="column" class="gd.app.model.Table"
column="COLUMN" />
</composite-id>
[...........]
<many-to-one name="column" class="gd.app.model.Column"
fetch="join" insert="false" update="false" >
<column name="COLUMN" />
<column name="TABLE" />
</many-to-one>
[...........]
</class>
</hibernate-mapping> |
Allez dires moi que vous avez une idée
Partager