GNT sans publicité, site mobile, fonctionnalitées exclusives...

[Hibernate 2.1] one-to-one : ClassCastException

Le
cpuaud
j'ai besoin d'une relation one-to-one entre deux beans. J'ai l'erreur
suivante alors qu'il me semble bien avoir 2 BigDecimal :
Caused by: java.lang.ClassCastException: java.lang.String
at net.sf.hibernate.type.BigDecimalType.set(BigDecimalType.java:33)
at
net.sf.hibernate.type.NullableType.nullSafeSet(NullableType.java:48)
at
net.sf.hibernate.type.NullableType.nullSafeSet(NullableType.java:35)
at
net.sf.hibernate.loader.Loader.bindPositionalParameters(Loader.java:749)
at
net.sf.hibernate.loader.Loader.prepareQueryStatement(Loader.java:788)
at net.sf.hibernate.loader.Loader.doQuery(Loader.java:265)
at
net.sf.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:133)
at net.sf.hibernate.loader.Loader.loadEntity(Loader.java:911)
at net.sf.hibernate.loader.Loader.loadEntity(Loader.java:931)
at net.sf.hibernate.loader.EntityLoader.load(EntityLoader.java:59)
at net.sf.hibernate.loader.EntityLoader.load(EntityLoader.java:51)
at
net.sf.hibernate.persister.EntityPersister.load(EntityPersister.java:419)
at net.sf.hibernate.impl.SessionImpl.doLoad(SessionImpl.java:2117)
at
net.sf.hibernate.impl.SessionImpl.doLoadByClass(SessionImpl.java:1991)
at
net.sf.hibernate.impl.SessionImpl.internalLoad(SessionImpl.java:1953)
at
net.sf.hibernate.type.OneToOneType.resolveIdentifier(OneToOneType.java:71)
Bean1.java :
/**
* @hibernate.one-to-one
* foreign-key="TYPDO"
* type="java.math.BigDecimal"
*
*/
public Bean2 getTypeDossier() {
return m_typeDossier;
}

public void setTypeDossier(Bean2 typDo) {
this.m_typeDossier = typDo;
}
Bean2.java :
/**
* @hibernate.id
* generator-class="assigned"
* column="TYPDO"
* type="java.math.BigDecimal"
* length="2"
*
*/
public BigDecimal getTypDo() {
return m_typDo;
}

public void setTypDo(BigDecimal typDo) {
this.m_typDo = typDo;
}

Bean1.hbm.xml :
<one-to-one
name="typeDossier"

class="fr.paris.du.pyramid4.commons.bean.gerco.GercoTypeDossierBean"
cascade="none"
outer-join="auto"
foreign-key="TYPDO"
/>

Bean2.hbm.xml :
<id
name="typDo"
column="TYPDO"
type="java.math.BigDecimal"
length="2"
>
Lire les 2 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
TestMan
Le #206068
Bonjour,

Ça fait un bail que j'ai pas fait du hibernate mais ton attribut "type"
me parrait étrange, car il me semble pas necessaire de stocker dans
Bean1 le type de la clé encommun avec Bean2 car elle correspond à la clé
primaire de Bean2.

En plus, j'ai un doute sur le type indiqué qui est une classe et pas le
type de mapping (correspondance entre le la couche de persistence et le
bean).

Regarde les exemples de 1-1 sur la doc, et essaye de corriger celà.

Pour rappel, dans un outil de mapping afin d'éviter tout problème il n'y
a généralement pas d'information redondante.

A+

TM

wrote:
j'ai besoin d'une relation one-to-one entre deux beans. J'ai l'erreur
suivante alors qu'il me semble bien avoir 2 BigDecimal :
Caused by: java.lang.ClassCastException: java.lang.String
at net.sf.hibernate.type.BigDecimalType.set(BigDecimalType.java:33)
at
net.sf.hibernate.type.NullableType.nullSafeSet(NullableType.java:48)
at
net.sf.hibernate.type.NullableType.nullSafeSet(NullableType.java:35)
at
net.sf.hibernate.loader.Loader.bindPositionalParameters(Loader.java:749)
at
net.sf.hibernate.loader.Loader.prepareQueryStatement(Loader.java:788)
at net.sf.hibernate.loader.Loader.doQuery(Loader.java:265)
at
net.sf.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:133)
at net.sf.hibernate.loader.Loader.loadEntity(Loader.java:911)
at net.sf.hibernate.loader.Loader.loadEntity(Loader.java:931)
at net.sf.hibernate.loader.EntityLoader.load(EntityLoader.java:59)
at net.sf.hibernate.loader.EntityLoader.load(EntityLoader.java:51)
at
net.sf.hibernate.persister.EntityPersister.load(EntityPersister.java:419)
at net.sf.hibernate.impl.SessionImpl.doLoad(SessionImpl.java:2117)
at
net.sf.hibernate.impl.SessionImpl.doLoadByClass(SessionImpl.java:1991)
at
net.sf.hibernate.impl.SessionImpl.internalLoad(SessionImpl.java:1953)
at
net.sf.hibernate.type.OneToOneType.resolveIdentifier(OneToOneType.java:71)
Bean1.java :
/**
* @hibernate.one-to-one
* foreign-key="TYPDO"
* type="java.math.BigDecimal"
*
*/
public Bean2 getTypeDossier() {
return m_typeDossier;
}

public void setTypeDossier(Bean2 typDo) {
this.m_typeDossier = typDo;
}
Bean2.java :
/**
* @hibernate.id
* generator-class="assigned"
* column="TYPDO"
* type="java.math.BigDecimal"
* length="2"
*
*/
public BigDecimal getTypDo() {
return m_typDo;
}

public void setTypDo(BigDecimal typDo) {
this.m_typDo = typDo;
}

Bean1.hbm.xml :
<one-to-one
name="typeDossier"

class="fr.paris.du.pyramid4.commons.bean.gerco.GercoTypeDossierBean"
cascade="none"
outer-join="auto"
foreign-key="TYPDO"
/>

Bean2.hbm.xml :
<id
name="typDo"
column="TYPDO"
type="java.math.BigDecimal"
length="2"






cpuaud
Le #206067
en fait "type" je l'ai ajouter pour essayer de forcer le passage en
BigDecimal.
Il y a une erreur dans mon code :
Bean1.hbm.xml :
<one-to-one
name="typeDossier"

class="Bean2"
cascade="none"
outer-join="auto"
foreign-key="TYPDO"
/>

D'habitude je génère le sbean mais là ça ne donne pas grand chose
(pas de clé dans la base !)
Publicité
Suivre les réponses
Poster une réponse
Anonyme