error en mapeo de tabla con jpa en eclipse con jboss 5.0 y 5.1

182 views
Skip to first unread message

juanjogoa

unread,
Sep 11, 2010, 2:52:25 PM9/11/10
to JavaSOS
buen día, les comento que tengo que consumir una db que ya existe y
esta en produccion, bueno asi lo encontre, y deseo consultar algunas
tablas, las cuales estoy mapeando, estuve realizando el mapeo con
eclipse y open jpa y no tengo ningun problema, pero cuando use el
mapeo con eclipse y jboss, tengo un problema, aqui estan los mapeos de
la tabla y el error, haber si alguien se tropezo con este error,
gracias.

tabla:
-------
CREATE TABLE GASTO (
ANIO VARCHAR(4) NOT NULL,
COD_CLAS VARCHAR(10) NOT NULL,
COD_GASTO VARCHAR(10) NOT NULL,
COD_GASTO_SUP VARCHAR(10) NULL,
NIVEL VARCHAR(1) NULL,
DES VARCHAR(10) NULL,
CONSTRAINT PRE_MAE_GA_3360042282 PRIMARY KEY NONCLUSTERED (ANIO,
COD_CLAS, COD_GASTO)

)
go

ALTER TABLE GASTO
ADD CONSTRAINT 1120007021 FOREIGN KEY (ANIO, COD_CLAS,
COD_GASTO_SUP)
REFERENCES GASTO (ANIO, COD_CLAS, COD_GASTO)
go

mapeo entidad1:
-----------------------
import java.io.Serializable;
import java.util.Set;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
@Entity
@Table(schema="dbo")
public class Gasto implements Serializable {
@EmbeddedId
private GastoPK pk;

private String nivel;

private String des;

@ManyToOne
@JoinColumns({
@JoinColumn(name="ANIO", referencedColumnName="ANIO"),
@JoinColumn(name="COD_CLAS", referencedColumnName="COD_CLAS"),
@JoinColumn(name="COD_GASTO_SUP", referencedColumnName="COD_GASTO")
})
private Gasto gasto;

@OneToMany(mappedBy="gasto")
private Set<Gasto> gastoCollection;

private static final long serialVersionUID = 1L;

public Gasto() {
super();
}

public GastoPK getPk() {
return this.pk;
}

public void setPk(GastoPK pk) {
this.pk = pk;
}

public String getNivel() {
return this.nivel;
}

public void setNivel(String nivel) {
this.nivel = nivel;
}

public String getDes() {
return this.des;
}

public void setDes(String des) {
this.des = des;
}

public Gasto getGasto() {
return this.gasto;
}

public void setGasto(Gasto gasto) {
this.gasto = gasto;
}

public Set<Gasto> getGastoCollection() {
return this.gastoCollection;
}

public void setGastoCollection(Set<Gasto> gastoCollection) {
this.gastoCollection = gastoCollection;
}

}

mapeo entidad 2
-------------------------
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Embeddable;

@Embeddable
public class GastoPK implements Serializable {
@Column(insertable=false, updatable=false)
private String anio;

@Column(name="COD_CLAS", insertable=false, updatable=false)
private String codClas;

@Column(name="COD_GASTO")
private String codGasto;

private static final long serialVersionUID = 1L;

public GastoPK() {
super();
}

public String getAnio() {
return this.anio;
}

public void setAnio(String anio) {
this.anio = anio;
}

public String getCodClas() {
return this.codClas;
}

public void setCodClas(String codClas) {
this.codClas = codClas;
}

public String getCodGasto() {
return this.codGasto;
}

public void setCodGasto(String codGasto) {
this.codGasto = codGasto;
}

@Override
public boolean equals(Object o) {
if (o == this) {
return true;
}
if ( ! (o instanceof GastoPK)) {
return false;
}
GastoPK other = (GastoPK) o;
return this.anio.equals(other.anio)
&& this.codClas.equals(other.codClas)
&& this.codGasto.equals(other.codGasto);
}

@Override
public int hashCode() {
final int prime = 31;
int hash = 17;
hash = hash * prime + this.anio.hashCode();
hash = hash * prime + this.codClas.hashCode();
hash = hash * prime + this.codGasto.hashCode();
return hash;
}

}

error:
------
09:20:05,046 INFO [HibernateSearchEventListenerRegister] Unable to
find org.hibernate.search.event.FullTextIndexEventListener on the
classpath. Hibernate Search is not enabled.
09:20:05,125 ERROR [AbstractKernelController] Error installing to
Start: name=persistence.unit:unitName=#ejemplo1JPA state=Create
javax.persistence.PersistenceException: [PersistenceUnit: ejemplo1JPA]
Unable to build EntityManagerFactory
at
org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:
677)
at
org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:
132)
at
org.jboss.jpa.deployment.PersistenceUnitDeployment.start(PersistenceUnitDeployment.java:
311)
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:597)
at
org.jboss.reflect.plugins.introspection.ReflectionUtils.invoke(ReflectionUtils.java:
59)
at
org.jboss.reflect.plugins.introspection.ReflectMethodInfoImpl.invoke(ReflectMethodInfoImpl.java:
150)
at
org.jboss.joinpoint.plugins.BasicMethodJoinPoint.dispatch(BasicMethodJoinPoint.java:
66)
at org.jboss.kernel.plugins.dependency.KernelControllerContextAction
$JoinpointDispatchWrapper.execute(KernelControllerContextAction.java:
241)
at
org.jboss.kernel.plugins.dependency.ExecutionWrapper.execute(ExecutionWrapper.java:
47)
at
org.jboss.kernel.plugins.dependency.KernelControllerContextAction.dispatchExecutionWrapper(KernelControllerContextAction.java:
109)
at
org.jboss.kernel.plugins.dependency.KernelControllerContextAction.dispatchJoinPoint(KernelControllerContextAction.java:
70)
at
org.jboss.kernel.plugins.dependency.LifecycleAction.installActionInternal(LifecycleAction.java:
221)
at
org.jboss.kernel.plugins.dependency.InstallsAwareAction.installAction(InstallsAwareAction.java:
54)
at
org.jboss.kernel.plugins.dependency.InstallsAwareAction.installAction(InstallsAwareAction.java:
42)
at
org.jboss.dependency.plugins.action.SimpleControllerContextAction.simpleInstallAction(SimpleControllerContextAction.java:
62)
at
org.jboss.dependency.plugins.action.AccessControllerContextAction.install(AccessControllerContextAction.java:
71)
at
org.jboss.dependency.plugins.AbstractControllerContextActions.install(AbstractControllerContextActions.java:
51)
at
org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:
348)
at
org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:
1598)
at
org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:
934)
at
org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:
1062)
at
org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:
984)
at
org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:
774)
at
org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:
540)
at
org.jboss.deployers.vfs.deployer.kernel.BeanMetaDataDeployer.deploy(BeanMetaDataDeployer.java:
121)
at
org.jboss.deployers.vfs.deployer.kernel.BeanMetaDataDeployer.deploy(BeanMetaDataDeployer.java:
51)
at
org.jboss.deployers.spi.deployer.helpers.AbstractSimpleRealDeployer.internalDeploy(AbstractSimpleRealDeployer.java:
62)
at
org.jboss.deployers.spi.deployer.helpers.AbstractRealDeployer.deploy(AbstractRealDeployer.java:
50)
at
org.jboss.deployers.plugins.deployers.DeployerWrapper.deploy(DeployerWrapper.java:
171)
at
org.jboss.deployers.plugins.deployers.DeployersImpl.doDeploy(DeployersImpl.java:
1439)
at
org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:
1157)
at
org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:
1178)
at
org.jboss.deployers.plugins.deployers.DeployersImpl.install(DeployersImpl.java:
1098)
at
org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:
348)
at
org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:
1598)
at
org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:
934)
at
org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:
1062)
at
org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:
984)
at
org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:
822)
at
org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:
553)
at
org.jboss.deployers.plugins.deployers.DeployersImpl.process(DeployersImpl.java:
781)
at
org.jboss.deployers.plugins.main.MainDeployerImpl.process(MainDeployerImpl.java:
545)
at
org.jboss.system.server.profileservice.ProfileServiceBootstrap.loadProfile(ProfileServiceBootstrap.java:
304)
at
org.jboss.system.server.profileservice.ProfileServiceBootstrap.start(ProfileServiceBootstrap.java:
205)
at
org.jboss.bootstrap.AbstractServerImpl.start(AbstractServerImpl.java:
405)
at org.jboss.Main.boot(Main.java:209)
at org.jboss.Main$1.run(Main.java:547)
at java.lang.Thread.run(Thread.java:619)
Caused by: org.hibernate.MappingException: Repeated column in mapping
for entity: Gasto column: COD_CLAS (should be mapped with
insert="false" update="false")
at
org.hibernate.mapping.PersistentClass.checkColumnDuplication(PersistentClass.java:
670)
at
org.hibernate.mapping.PersistentClass.checkPropertyColumnDuplication(PersistentClass.java:
692)
at
org.hibernate.mapping.PersistentClass.checkColumnDuplication(PersistentClass.java:
714)
at
org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:
468)
at org.hibernate.mapping.RootClass.validate(RootClass.java:215)
at org.hibernate.cfg.Configuration.validate(Configuration.java:1135)
at
org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:
1320)
at
org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:
867)
at
org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:
669)
... 50 more
09:20:05,187 INFO [JBossASKernel] Created KernelDeployment for:
jconn3.jar

Fernando D. Frezzotti

unread,
Sep 20, 2010, 9:04:04 AM9/20/10
to jav...@googlegroups.com
Hola Juán,

No vi demasiado, pero como primer medida no creo que el problema sea un error de desarrollo, y más allá de eso, el error es que no encuentra una clase (Unable to
find org.hibernate.search.event.FullTextIndexEventListener on the classpath. Hibernate Search is not enabled.), fijate si no es que en el JBoss no estás referenciando al jar de openjpa, o hibernate o lo que sea, puede ser que el eclipse te lo haya configurado tu server automáticamente, pero en el jboss lo tendrías que referenciar vos.

Espero que sea eso.

Saludos

Fernando


--
www.JavaSOS.com
Grupo de colaboración Java/J2ee para desarrolladores de habla hispana.



--
Ing. Fernando D. Frezzotti

Jorge Medina

unread,
Sep 20, 2010, 7:37:41 PM9/20/10
to jav...@googlegroups.com
El primer evento es de tipo INFO, no es un error. Solo indica que
HibernateSearch no ha sido habilitado.

09:20:05,046 INFO [HibernateSearchEventListenerRegister] Unable to
find org.hibernate.search.event.FullTextIndexEventListener on the
classpath. Hibernate Search is not enabled.

El error al que supongo Juan se refiere es el segundo evento :

09:20:05,125 ERROR [AbstractKernelController] Error installing to
Start: name=persistence.unit:unitName=#ejemplo1JPA state=Create
javax.persistence.PersistenceException: [PersistenceUnit: ejemplo1JPA]
Unable to build EntityManagerFactory

y al parecer la causa es:

Caused by: org.hibernate.MappingException: Repeated column in mapping
for entity: Gasto column: COD_CLAS (should be mapped with
insert="false" update="false")


Una forma de resolverlo es creando una vista, donde la columna ANIO y
COD_CLAS se repita.
El problema que enfrentas se debe a que parte de la llave foranea es
tambien tu llave primaria. No puedes actualizar la llave foranea sin
que parezca que la llave principal tambien esta siendo modificada.


-Jorge

Reply all
Reply to author
Forward
0 new messages