Problem with seamgen generate-ui on composite primarykey
johog Aug 23, 2009 5:40 PMSeamgen throws ExporterException when I try to generate user interface for an entity with composite primarykey. I got the following error:
jar: [hibernate] Executing Hibernate Tool with a JPA Configuration [hibernate] 1. task: generic exportertemplate: view/list.xhtml.ftl [hibernate] log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version). [hibernate] log4j:WARN Please initialize the log4j system properly. [hibernate] An exception occurred while running exporter #2:generic exportertemplate: view/list.xhtml.ftl [hibernate] To get the full stack trace run ant with -verbose [hibernate] org.hibernate.tool.hbm2x.ExporterException: Error while processing Entity: st.horting.leagbench.entity.ShootCase with template view/list.xhtml.ftl [hibernate] freemarker.template.TemplateModelException: No signature of method isComponent matches (java.lang.Object) BUILD FAILED /home/johan/Software/jboss-seam-2.2.0.GA/seam-gen/build.xml:1598: org.hibernate.tool.hbm2x.ExporterException: Error while processing Entity: st.horting.leagbench.entity.ShootCase with template view/list.xhtml.ftl Entity class: @Entity @IdClass(ShootCasePK.class) public class ShootCase implements Serializable { private ShootCasePK pk = new ShootCasePK(); private TestCase testCase; private int execTime; private Set<ShootCaseRound> shootCaseRounds = new HashSet<ShootCaseRound>(); private Appraisal appraisal; /** * @return the pk */ @Transient public ShootCasePK getPk() { return this.pk; } /** * @return the shootId */ @Id public Integer getShootId() { return this.pk.getShootId(); } /** * @return the caseId */ @Id public Integer getCaseId() { return this.pk.getCaseId(); } @ManyToOne @JoinColumn(name="caseId", referencedColumnName="id", insertable=false, updatable=false) public TestCase getTestCase() { return testCase; } @OneToMany @JoinColumns({@JoinColumn(name="shootId"),@JoinColumn(name="caseId") }) public Set<ShootCaseRound> getShootCaseRounds() { return this.shootCaseRounds; } /** * @return the execTime * Execution time for test shoot of test case in seconds. */ @Column(nullable=true) public int getExecTime() { return this.execTime; } /** * @return the appraisal */ @Enumerated(EnumType.ORDINAL) public Appraisal getAppraisal() { return this.appraisal; } /** * @param shootId the shootId to set */ public void setShootId( Integer shootId ) { this.pk.setShootId( shootId ); } /** * @param caseId the caseId to set */ public void setCaseId( Integer caseId ) { this.pk.setCaseId( caseId ); } /** * @param testCase the testCase to set */ public void setTestCase( TestCase testCase ) { this.testCase = testCase; } /** * @param shootCaseRounds the shootCaseRounds to set */ public void setShootCaseRounds( Set<ShootCaseRound> shootCaseRounds ) { this.shootCaseRounds = shootCaseRounds; } /** * @param execTime the execution time to set */ public void setExecTime( int execTime ) { this.execTime = execTime; } /* (non-Javadoc) * @see java.lang.Object#equals(java.lang.Object) */ @Override public boolean equals( Object obj ) { if (obj == this) return true; if ( ! (obj instanceof ShootCase)) return false; ShootCase that = (ShootCase)obj; return this.pk.equals( that.pk ); } /* (non-Javadoc) * @see java.lang.Object#hashCode() */ @Override public int hashCode() { return this.pk.hashCode(); } /** * @param appraisal the appraisal to set */ public void setAppraisal( Appraisal appraisal ) { this.appraisal = appraisal; } } Primarykey class: public class ShootCasePK implements Serializable { private Integer shootId; private Integer caseId; public ShootCasePK() { this(0,0); } public ShootCasePK(Integer shootId, Integer caseId) { this.shootId = shootId; this.caseId = caseId; } /** * @return the shootId */ public Integer getShootId() { return this.shootId; } /** * @param shootId the shootId to set */ public void setShootId( Integer shootId ) { this.shootId = shootId; } /** * @return the caseId */ public Integer getCaseId() { return this.caseId; } /** * @param caseId the caseId to set */ public void setCaseId( Integer caseId ) { this.caseId = caseId; } /* (non-Javadoc) * @see java.lang.Object#equals(java.lang.Object) */ @Override public boolean equals( Object obj ) { if (obj == this) return true; if ( ! (obj instanceof ShootCasePK)) return false; ShootCasePK pk = (ShootCasePK)obj; if ( ! shootId.equals( pk.shootId )) return false; if ( ! caseId.equals( pk.caseId )) return false; return true; } /* (non-Javadoc) * @see java.lang.Object#hashCode() */ @Override public int hashCode() { return (shootId.intValue() * 149) + caseId.intValue(); } }