Mapping file sem primary key - Hibernate

Olá, de novo e de novo…

Eu posso criar um bean sem as tags “id” ou “composite-id”??

è que eu tenho umas tabelas que não tem chave primária,
como a de baixo:


<hibernate-mapping> 
    <class name="embarcador.database.web.manager.UserLog" table="log_usuario"> 
        <many-to-one name="user" column="cpf" 
         class="embarcador.database.web.manager.User"/> 
      <property name="dtLog" column="dt_log"/> 
      <many-to-one name="action" column="id_acao" 
         class="embarcador.database.web.manager.Action"/> 
        <property name="idSession" column="id_sessao"/> 
        <property name="complement" column="complemento"/>      
    </class> 

</hibernate-mapping>

não

Vixe… é mesmo???

Bom, eu tenho uma teoria… está acontecendo um exception

javax.servlet.ServletException: duplicate import: User

que por um acaso se relaciona com uma tabela log_usuario
(bean UserLog), onde este não tem chave primária…

Será que é por isso que está ocorrendo esta exception???

valew

abraço

se não tem voce pode definir esse bean como sendo 1 componente de outro, ou colocar 1 campo como sendo pk, mesmo não fazendo muito sentido.

não sei, coloca 1 stack trace aqui.

Minha teoria foi por agua abaixo… bom, eu coloquei
as primary keys nas tabelas e as tags “id” no mapeamento e
tbm atualizei os beans…

o problema agora é encontrar o q está errado…

mas valew pela atenção…

Segue a rota do erro completa:

javax.servlet.ServletException: duplicate import: User
	at embarcador.database.web.plugin.HibernatePlugIn.initHibernate(HibernatePlugIn.java:162)
	at embarcador.database.web.plugin.HibernatePlugIn.init(HibernatePlugIn.java:121)
	at org.apache.struts.action.ActionServlet.initModulePlugIns(ActionServlet.java:1158)
	at org.apache.struts.action.ActionServlet.init(ActionServlet.java:473)
	at javax.servlet.GenericServlet.init(GenericServlet.java:256)
	at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:935)
	at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:823)
	at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3421)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:3609)
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:821)
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:807)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:579)
	at org.apache.catalina.core.StandardHostDeployer.install(StandardHostDeployer.java:307)
	at org.apache.catalina.core.StandardHost.install(StandardHost.java:772)
	at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:492)
	at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:400)
	at org.apache.catalina.startup.HostConfig.start(HostConfig.java:718)
	at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:358)
	at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:166)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1196)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:738)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1188)
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:347)
	at org.apache.catalina.core.StandardService.start(StandardService.java:497)
	at org.apache.catalina.core.StandardServer.start(StandardServer.java:2190)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:512)
	at org.apache.catalina.startup.Catalina.execute(Catalina.java:400)
	at org.apache.catalina.startup.Catalina.process(Catalina.java:180)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:324)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:203)
----- Root Cause -----
net.sf.hibernate.MappingException: duplicate import: User
	at net.sf.hibernate.cfg.Mappings.addImport(Mappings.java:60)
	at net.sf.hibernate.cfg.Binder.bindClass(Binder.java:108)
	at net.sf.hibernate.cfg.Binder.bindRootClass(Binder.java:165)
	at net.sf.hibernate.cfg.Binder.bindRoot(Binder.java:1094)
	at net.sf.hibernate.cfg.Configuration.add(Configuration.java:230)
	at net.sf.hibernate.cfg.Configuration.addInputStream(Configuration.java:252)
	at net.sf.hibernate.cfg.Configuration.addResource(Configuration.java:273)
	at net.sf.hibernate.cfg.Configuration.configure(Configuration.java:841)
	at net.sf.hibernate.cfg.Configuration.configure(Configuration.java:792)
	at net.sf.hibernate.cfg.Configuration.configure(Configuration.java:764)
	at embarcador.database.web.plugin.HibernatePlugIn.initHibernate(HibernatePlugIn.java:147)
	at embarcador.database.web.plugin.HibernatePlugIn.init(HibernatePlugIn.java:121)
	at org.apache.struts.action.ActionServlet.initModulePlugIns(ActionServlet.java:1158)
	at org.apache.struts.action.ActionServlet.init(ActionServlet.java:473)
	at javax.servlet.GenericServlet.init(GenericServlet.java:256)
	at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:935)
	at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:823)
	at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3421)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:3609)
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:821)
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:807)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:579)
	at org.apache.catalina.core.StandardHostDeployer.install(StandardHostDeployer.java:307)
	at org.apache.catalina.core.StandardHost.install(StandardHost.java:772)
	at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:492)
	at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:400)
	at org.apache.catalina.startup.HostConfig.start(HostConfig.java:718)
	at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:358)
	at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:166)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1196)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:738)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1188)
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:347)
	at org.apache.catalina.core.StandardService.start(StandardService.java:497)
	at org.apache.catalina.core.StandardServer.start(StandardServer.java:2190)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:512)
	at org.apache.catalina.startup.Catalina.execute(Catalina.java:400)
	at org.apache.catalina.startup.Catalina.process(Catalina.java:180)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:324)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:203)

A classe “User” não está sendo carregada mais de uma vez para sua session?

:?

Onde está o seu <qualquer_coisa>.hbm.xml?

Olá, tudo bom??

No log do próprio tomcat ele estava retornando apenas
que o bean User estava duplicado, mas na verdade
foi um conjunto de erros de mapeamentos de outros beans
que estavam incorretos, e o User, tbm, claro!!!

Eu então startei o log4j (estava me baseando apenas no log do
tomcat, como já disse) e finalmente pude ver em detalhes o que estava
ocorrendo.

Eram erros bobos, de como mapear um List (bag) de um bean, onde
a chave primária é composta, coisinhas assim, mas q já resolvi tudo.

Obrigado a todos pela ajuda e pela atenção!!

abraço!!

Pra isso que unit tests são muito uteis. E por isso que XWORK deixa o Struts no chinelo.

Olá pessoal,

Eu tenho um banco de dados antigo (Oracle 7) que não pode ser alterado e precisa ser replicado para uma base mais recente a cada 30 minutos, estou usando JPA com o Toplink pra fazer isso mas ele possui algumas tabelas sem primary key. Alguma sugestão de como fazer o mapeamento dessas tabelas?