-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 
Author Message
 Post subject: Mapping error between 2 classes
PostPosted: Thu Feb 19, 2004 7:50 pm 
Newbie

Joined: Wed Feb 11, 2004 1:45 pm
Posts: 4
On startup of my application on weblogic 8.1, the error i get is
------------------------------------------------------------------------------
- Mapping collection: com.usg.domain.hr.HrJobClass.hrJobDescs -> HR_JOB_DESC
- processing one-to-one association property references
- processing foreign key constraints
- property mapping has wrong number of columns: com.usg.domain.hr.HrJobClass.shortDesc type: object
net.sf.hibernate.MappingException: property mapping has wrong number of columns: com.usg.domain.hr.HrJobClass.shortDesc type: object
at net.sf.hibernate.mapping.PersistentClass.validate(PersistentClass.java:269)
at net.sf.hibernate.mapping.RootClass.validate(RootClass.java:199)
at net.sf.hibernate.cfg.Configuration.validate(Configuration.java:576)
at net.sf.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:733)
at com.usg.weblogic.WLSStartup.createSessionFactory(WLSStartup.java:79)
at com.usg.weblogic.WLSStartup.doBind(WLSStartup.java:65)
at com.usg.weblogic.WLSStartup.startup(WLSStartup.java:43)
at com.usg.weblogic.WLSStartup.main(WLSStartup.java:96)
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 weblogic.j2ee.AppLifecycleListenerInternal.invokeMain(AppLifecycleListenerInternal.java:61)
at weblogic.j2ee.AppLifecycleListenerInternal.preStart(AppLifecycleListenerInternal.java:34)
at weblogic.j2ee.ListenerInvocationAction.run(ListenerInvocationAction.java:50)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
at weblogic.j2ee.J2EEApplicationContainer.notifySecureListener(J2EEApplicationContainer.java:4454)
at weblogic.j2ee.J2EEApplicationContainer.notify(J2EEApplicationContainer.java:4431)
at weblogic.j2ee.J2EEApplicationContainer.prepare(J2EEApplicationContainer.java:985)
at weblogic.j2ee.J2EEApplicationContainer.prepare(J2EEApplicationContainer.java:822)
at weblogic.management.deploy.slave.SlaveDeployer$Application.prepare(SlaveDeployer.java:3085)
at weblogic.management.deploy.slave.SlaveDeployer.prepareAllApplications(SlaveDeployer.java:930)
at weblogic.management.deploy.slave.SlaveDeployer.resume(SlaveDeployer.java:398)
at weblogic.management.deploy.DeploymentManagerServerLifeCycleImpl.resume(DeploymentManagerServerLifeCycleImpl.java:230)
at weblogic.t3.srvr.SubsystemManager.resume(SubsystemManager.java:131)
at weblogic.t3.srvr.T3Srvr.resume(T3Srvr.java:964)
at weblogic.t3.srvr.T3Srvr.run(T3Srvr.java:359)
at weblogic.Server.main(Server.java:32)
- Out WLSStartup.startup
----------------------------------------------------------------------------

I have 2 tables (Hr_Job_Class and HR_JOB_DESC).

Datamodel for HR_JOB_CLASS is:
CLASS_ID (Primary key)
SHORT_DESC
LONG_DESC

Data model for HR_JOB_DESC is:
JOB_DESC_ID (primary key)
CLASS_ID (foreign key: refers to class_id of HR_JOB_CLASS)
SHORT_DESC
LONG_DESC
--------------------------------------------------------------
The hibernate mapping files for HR_JOB_CLASS is
--------------------------------------------------------------
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >

<hibernate-mapping>
<!--
Created by the Middlegen Hibernate plugin

http://boss.bekk.no/boss/middlegen/
http://hibernate.sourceforge.net/
-->

<class
name="com.usg.domain.hr.HrJobClass"
table="HR_JOB_CLASS"
>

<id
name="classId"
type="java.lang.Integer"
column="CLASS_ID"
>
<generator class="assigned" />
</id>

<property
name="shortDesc"
type="java.lang.Object"
column="SHORT_DESC"
not-null="true"
length="256"
/>
<property
name="longDesc"
type="java.lang.Object"
column="LONG_DESC"
not-null="true"
length="4000"
/>

<!-- associations -->
<!-- bi-directional one-to-many association to HrJobDesc -->
<set
name="hrJobDescs"
lazy="true"
inverse="true"
>
<key>
<column name="CLASS_ID" />
</key>
<one-to-many
class="com.usg.domain.hr.HrJobDesc"
/>
</set>

</class>
</hibernate-mapping>
---------------------------------------------------
The hibernate mapping file for HR_JOB_DESC is
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >

<hibernate-mapping>
<!--
Created by the Middlegen Hibernate plugin

http://boss.bekk.no/boss/middlegen/
http://hibernate.sourceforge.net/
-->

<class
name="com.usg.domain.hr.HrJobDesc"
table="HR_JOB_DESC"
>

<id
name="jobDescId"
type="java.lang.Integer"
column="JOB_DESC_ID"
>
<generator class="assigned" />
</id>

<property
name="shortDesc"
type="java.lang.Object"
column="SHORT_DESC"
not-null="true"
length="256"
/>
<property
name="longDesc"
type="java.lang.Object"
column="LONG_DESC"
not-null="true"
length="4000"
/>

<!-- associations -->
<!-- bi-directional many-to-one association to HrJobClass -->
<many-to-one
name="hrJobClass"
class="com.usg.domain.hr.HrJobClass"
not-null="true"
>
<column name="CLASS_ID" />
</many-to-one>

</class>
</hibernate-mapping>
-----------------------------------------------------
Hibernate class for HR_JOB_CLASS is

import java.io.Serializable;
import java.util.Set;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;

/** @author Hibernate CodeGenerator */
public class HrJobClass implements Serializable {

/** identifier field */
private Integer classId;

/** persistent field */
private Object shortDesc;

/** persistent field */
private Object longDesc;

/** persistent field */
private Set hrJobDescs;

/** full constructor */
public HrJobClass(Integer classId, Object shortDesc, Object longDesc, Set hrJobDescs) {
this.classId = classId;
this.shortDesc = shortDesc;
this.longDesc = longDesc;
this.hrJobDescs = hrJobDescs;
}

/** default constructor */
public HrJobClass() {
}

public Integer getClassId() {
return this.classId;
}

public void setClassId(Integer classId) {
this.classId = classId;
}

public Object getShortDesc() {
return this.shortDesc;
}

public void setShortDesc(Object shortDesc) {
this.shortDesc = shortDesc;
}

public Object getLongDesc() {
return this.longDesc;
}

public void setLongDesc(Object longDesc) {
this.longDesc = longDesc;
}

public Set getHrJobDescs() {
return this.hrJobDescs;
}

public void setHrJobDescs(Set hrJobDescs) {
this.hrJobDescs = hrJobDescs;
}

public String toString() {
return new ToStringBuilder(this)
.append("classId", getClassId())
.toString();
}

public boolean equals(Object other) {
if ( !(other instanceof HrJobClass) ) return false;
HrJobClass castOther = (HrJobClass) other;
return new EqualsBuilder()
.append(this.getClassId(), castOther.getClassId())
.isEquals();
}

public int hashCode() {
return new HashCodeBuilder()
.append(getClassId())
.toHashCode();
}

}
----------------------------------
Hibernate java class for HR_JOB_DESC is
package com.usg.domain.hr;

import java.io.Serializable;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;

/** @author Hibernate CodeGenerator */
public class HrJobDesc implements Serializable {

/** identifier field */
private Integer jobDescId;

/** persistent field */
private Object shortDesc;

/** persistent field */
private Object longDesc;

/** persistent field */
private com.usg.domain.hr.HrJobClass hrJobClass;

/** full constructor */
public HrJobDesc(Integer jobDescId, Object shortDesc, Object longDesc, com.usg.domain.hr.HrJobClass hrJobClass) {
this.jobDescId = jobDescId;
this.shortDesc = shortDesc;
this.longDesc = longDesc;
this.hrJobClass = hrJobClass;
}

/** default constructor */
public HrJobDesc() {
}

public Integer getJobDescId() {
return this.jobDescId;
}

public void setJobDescId(Integer jobDescId) {
this.jobDescId = jobDescId;
}

public Object getShortDesc() {
return this.shortDesc;
}

public void setShortDesc(Object shortDesc) {
this.shortDesc = shortDesc;
}

public Object getLongDesc() {
return this.longDesc;
}

public void setLongDesc(Object longDesc) {
this.longDesc = longDesc;
}

public com.usg.domain.hr.HrJobClass getHrJobClass() {
return this.hrJobClass;
}

public void setHrJobClass(com.usg.domain.hr.HrJobClass hrJobClass) {
this.hrJobClass = hrJobClass;
}

public String toString() {
return new ToStringBuilder(this)
.append("jobDescId", getJobDescId())
.toString();
}

public boolean equals(Object other) {
if ( !(other instanceof HrJobDesc) ) return false;
HrJobDesc castOther = (HrJobDesc) other;
return new EqualsBuilder()
.append(this.getJobDescId(), castOther.getJobDescId())
.isEquals();
}

public int hashCode() {
return new HashCodeBuilder()
.append(getJobDescId())
.toHashCode();
}

}
[/list]


Top
 Profile  
 
 Post subject:
PostPosted: Thu Feb 19, 2004 8:47 pm 
Newbie

Joined: Wed Feb 11, 2004 4:48 pm
Posts: 4
The java.lang.Object mapping expects to get column mappings for the id and type of actual class persisted. From the net.sf.hibernate.test package Glarch.hbm.xml:

<property name="any" type="object">
<column name="`any_id of object`"/>
<column name="`any_class of object`"/>
</property>

You should probably reconsider if you really want to have any type of persistent object as a description, or if String would do.


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.