Hello,
in my project following error is raised. I don't know why Set is
expected because everywhere List is declared. I'm using 1.5. Any idea?

TNX

STACK TRACE:
java.lang.ClassCastException: java.util.ArrayList cannot be cast to
java.util.Set
        at org.hibernate.type.SetType.wrap(SetType.java:39)
        at 
org.hibernate.event.def.WrapVisitor.processArrayOrNewCollection(WrapVisitor.java:84)
        at 
org.hibernate.event.def.WrapVisitor.processCollection(WrapVisitor.java:51)
        at 
org.hibernate.event.def.AbstractVisitor.processValue(AbstractVisitor.java:101)
        at org.hibernate.event.def.WrapVisitor.processValue(WrapVisitor.java:98)
        at 
org.hibernate.event.def.AbstractVisitor.processEntityPropertyValues(AbstractVisitor.java:55)
        at 
org.hibernate.event.def.DefaultFlushEntityEventListener.wrapCollections(DefaultFlushEntityEventListener.java:192)
        at 
org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:125)
        at 
org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:196)
        at 
org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:76)
        at 
org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:26)
        at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
        at 
org.springframework.orm.hibernate3.HibernateAccessor.flushIfNecessary(HibernateAccessor.java:390)
        at 
org.springframework.orm.hibernate3.HibernateInterceptor.invoke(HibernateInterceptor.java:105)
        at 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
        at 
org.springframework.aop.framework.adapter.ThrowsAdviceInterceptor.invoke(ThrowsAdviceInterceptor.java:126)
        at 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
        at 
org.fornax.cartridges.sculptor.framework.errorhandling.ServiceContextStoreAdvice.invoke(ServiceContextStoreAdvice.java:39)
        at 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
        at 
org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
        at 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
        at 
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
        at $Proxy9.save(Unknown Source)
        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 sk.f4s.pic.web.server.ScServlet.handleRequest(ScServlet.java:348)

DESIGN:
                Entity OrgUnit {
                        scaffold
                        String name key length="30";
                        - @OrgUnitKind orgUnitKind nullable;
                        - @Employee boss nullable;
                        - List<@Employee> employee;
                        - @OrgUnit parent nullable;
                }

HBM.XML:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping
DTD//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd";>

<hibernate-mapping>
  <class name="sk.f4s.pic.org.domain.OrgUnit" table="ORGUNIT">
    <id name="id">
      <generator class="native"/>
    </id>
    <version name="version" type="java.lang.Long"/>
    <!-- <natural-id> There is a BUG HHH-1569 that prevents us from
using <natural-id> -->
    <property name="name" length="30" not-null="true" unique="true"/>
    <!-- </natural-id> -->
    <property name="createdDate" type="timestamp"/>
    <property name="createdBy" length="50"/>
    <property name="lastUpdated" type="timestamp"/>
    <property name="lastUpdatedBy" length="50"/>
    <many-to-one name="orgUnitKind" column="ORGUNITKIND"
class="sk.f4s.pic.org.domain.OrgUnitKind" cascade="all"/>
    <many-to-one name="boss" column="BOSS"
class="sk.f4s.pic.org.domain.Employee" cascade="all"/>
    <many-to-one name="parent" column="PARENT"
class="sk.f4s.pic.org.domain.OrgUnit" cascade="all"/>
    <set name="employee" table="EMPLOYEE_ORGUNIT" cascade="all">
      <key column="ORGUNIT"/>
      <many-to-many column="EMPLOYEE" class="sk.f4s.pic.org.domain.Employee"/>
    </set>
  </class>
</hibernate-mapping>


BASE:
public abstract class OrgUnitBase extends AbstractDomainObject
    implements Auditable {
    private Long id;
    private String name;
    private Date createdDate;
    private String createdBy;
    private Date lastUpdated;
    private String lastUpdatedBy;
    private Long version;
    private OrgUnitKind orgUnitKind;
    private Employee boss;
    private OrgUnit parent;
    private List<Employee> employee = new ArrayList<Employee>();

    protected OrgUnitBase() {
    }

    public OrgUnitBase(@Name("name")
    String name) {
        super();
        Validate.notNull(name);
        this.name = name;
    }

    public Long getId() {
        return id;
    }

    /**
     * The id is not intended to be changed or assigned manually, but
     * for test purpose it is allowed to assign the id.
     */
    protected void setId(Long id) {
        if ((this.id != null) && !this.id.equals(id)) {
            throw new IllegalArgumentException(
                "Not allowed to change the id property.");
        }
        this.id = id;
    }

    public String getName() {
        return name;
    }

    @SuppressWarnings("unused")
    private void setName(String name) {
        if ((this.name != null) && !this.name.equals(name)) {
            throw new IllegalArgumentException(
                "Not allowed to change the name property.");
        }
        this.name = name;
    }

    public Date getCreatedDate() {
        return createdDate;
    }

    public void setCreatedDate(Date createdDate) {
        this.createdDate = createdDate;
    }

    public String getCreatedBy() {
        return createdBy;
    }

    public void setCreatedBy(String createdBy) {
        this.createdBy = createdBy;
    }

    public Date getLastUpdated() {
        return lastUpdated;
    }

    public void setLastUpdated(Date lastUpdated) {
        this.lastUpdated = lastUpdated;
    }

    public String getLastUpdatedBy() {
        return lastUpdatedBy;
    }

    public void setLastUpdatedBy(String lastUpdatedBy) {
        this.lastUpdatedBy = lastUpdatedBy;
    }

    public Long getVersion() {
        return version;
    }

    public void setVersion(Long version) {
        this.version = version;
    }

    public OrgUnitKind getOrgUnitKind() {
        return orgUnitKind;
    }

    public void setOrgUnitKind(OrgUnitKind orgUnitKind) {
        this.orgUnitKind = orgUnitKind;
    }

    public Employee getBoss() {
        return boss;
    }

    public void setBoss(Employee boss) {
        this.boss = boss;
    }

    public OrgUnit getParent() {
        return parent;
    }

    public void setParent(OrgUnit parent) {
        this.parent = parent;
    }

    public List<Employee> getEmployee() {
        return employee;
    }

    @SuppressWarnings("unused")
    private void setEmployee(List<Employee> employee) {
        this.employee = employee;
    }

    /**
     * This method is used by equals and hashCode.
     * @return {...@link #getName}
     */
    public Object getKey() {
        return getName();
    }
}

------------------------------------------------------------------------------
_______________________________________________
Fornax-developer mailing list
Fornax-developer@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/fornax-developer

Reply via email to