PROBLEMON con Hibernate

JLM
13 de Mayo del 2004
Hola,

He estado leyendo la doc. de Hibernate y he problado el ejemplo del capítulo 18 en el que relaciona "Customer/Order/Product" y me ha funcionado bien. Ahora bien, en mis bases de datos las claves primarias son compuestas por más de una campo, entonces, para hacer pruebas, lo que he hecho ha sido agregar el campo "COMPANY_CODE" a las tablas ORDER y CUSTOMER. Mi situación es la siguiente :

CUSTOMERS :
COMPANY_CODE
CUSTOMER_ID
CUSTOMER_NAME

ORDERS :
COMPANY_CODE
ORDER_ID
CUSTOMER_ID
DATE



<hibernate-mapping>

<class name="business.Customer" table="CUSTOMERS">
<composite-id>
<key-property name="companyCode" column="COMPANY_CODE"></key-property>
<key-property name="customerId" column="CUSTOMER_ID"></key-property>
</composite-id>

<property name="name"></property>

<set name="orders" inverse="true" lazy="true">
<key>
<column name="COMPANY_CODE"></column>
<column name="CUSTOMER_ID"></column>
</key>
<one-to-many class="business.Order"></one-to-many>
</set>

</class>

<class name="business.Order" table="ORDERS">

<composite-id>
<key-property name="companyCode" column="COMPANY_CODE"></key-property>
<key-property name="orderId" column="ORDER_ID"></key-property>
</composite-id>

<property name="date"></property>



<many-to-one name="customer">
<column name="COMPANY_CODE"></column>
<column name="CUSTOMER_ID"></column>
</many-to-one>



</class>


</hibernate-mapping>




El error que obtengo es el siguiente :



INFO - Hibernate 2.1.3
INFO - hibernate.properties not found
INFO - using CGLIB reflection optimizer
INFO - configuring from resource: /hibernate.cfg.xml
INFO - Configuration resource: /hibernate.cfg.xml
INFO - Mapping resource: Ordenes.hbm.xml
INFO - Mapping class: business.Customer -> CUSTOMERS
INFO - Mapping class: business.Order -> ORDERS
INFO - Configured SessionFactory: null
INFO - processing one-to-many association mappings
INFO - Mapping collection: business.Customer.orders -> ORDERS
INFO - processing one-to-one association property references
INFO - processing foreign key constraints
INFO - Using dialect: net.sf.hibernate.dialect.MySQLDialect
INFO - Use outer join fetching: false
WARN - No connection properties specified - the user must supply JDBC connections
INFO - No TransactionManagerLookup configured (in JTA environment, use of process level read-write cache is not recommended)
INFO - Use scrollable result sets: false
INFO - Use JDBC3 getGeneratedKeys(): false
INFO - Optimize cache for minimal puts: false
INFO - echoing all SQL to stdout
INFO - Query language substitutions: {}
INFO - cache provider: net.sf.ehcache.hibernate.Provider
INFO - instantiating and configuring caches
INFO - building session factory
net.sf.hibernate.MappingException: Repeated column in mapping for class business.Order should be mapped with insert="false" update="false": COMPANY_CODE at net.sf.hibernate.persister.AbstractEntityPersister.checkColumnDuplication(AbstractEntityPersister.java:1002)
at net.sf.hibernate.persister.EntityPersister.<init>(EntityPersister.java:819)
at net.sf.hibernate.persister.PersisterFactory.createClassPersister(PersisterFactory.java:42)
at net.sf.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:137)
at net.sf.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:768)
at SelectOrder.main(SelectOrder.java:9)
Exception in thread "main"


He estado probando varios mappings, pero nada, no sé cómo realizarlo.
¿ Sabe alguien decirme cómo hacer esta relación ?
Si funcionara esto sería la hostia, pero veo que con claves compuestas los mappings son algo complicados


Graciasss

JLM
13 de Mayo del 2004
¿ Qué pasa que nadie se anima a contestar ? Veo que voy a tener que continuar con las commons-dbutils y seguir picando SQL del copón

Jaime Kubala
13 de Mayo del 2004
en el tag <many-to-one> puedes incluir:
insert="false" update="false" y te funcionará