Here is what I have in club POJO:
@OneToMany(targetEntity=org.appfuse.model.User.class,
cascade=CascadeType.ALL, mappedBy="club", fetch = FetchType.LAZY)
public Set<User> getUsers()
{
return users;
}
Here is what I have in User POJO
@ManyToOne(optional=false)
@JoinColumn(name="clubID", nullable=false, updatable=false)
public Club getClub()
{
return club;
}
But I still hitting the error:
org.springframework.beans.factory.BeanCreationException: Error creating bean
with name 'sessionFactory' defined in URL [jar:file:/C:/Documents and
Settings/fan/.m2/repository/org/appfuse/appfuse-hibernate/2.0-m5/appfuse-hibernate-2.0-m5.jar!/applicationContext-dao.xml]:
Invocation of init method failed; nested exception is
org.hibernate.AnnotationException: mappedBy reference an unknown target
entity property: org.appfuse.model.User.club in
com.smartclub.model.Club.users
Caused by: org.hibernate.AnnotationException: mappedBy reference an unknown
target entity property: org.appfuse.model.User.club in
com.smartclub.model.Club.users
at
org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:543)
at
org.hibernate.cfg.annotations.CollectionBinder$1.secondPass(CollectionBinder.java:508)
at
org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:43)
at
org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1127)
at
org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:296)
at
org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1283)
at
org.springframework.orm.hibernate3.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:805)
at
org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:745)
at
org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:134)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1202)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1172)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:428)
at
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:251)
at
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:156)
at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:248)
at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160)
at
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:284)
at
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:352)
at
org.springframework.test.AbstractSingleSpringContextTests.createApplicationContext(AbstractSingleSpringContextTests.java:199)
at
org.springframework.test.AbstractSingleSpringContextTests.loadContextLocations(AbstractSingleSpringContextTests.java:179)
at
org.springframework.test.AbstractSingleSpringContextTests.loadContext(AbstractSingleSpringContextTests.java:158)
at
org.springframework.test.AbstractSpringContextTests.getContext(AbstractSpringContextTests.java:105)
at
org.springframework.test.AbstractSingleSpringContextTests.setUp(AbstractSingleSpringContextTests.java:87)
at junit.framework.TestCase.runBare(TestCase.java:128)
at
org.springframework.test.ConditionalTestCase.runBare(ConditionalTestCase.java:69)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:120)
at junit.framework.TestSuite.runTest(TestSuite.java:230)
at junit.framework.TestSuite.run(TestSuite.java:225)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at
org.apache.maven.surefire.junit.JUnitTestSet.execute(JUnitTestSet.java:210)
at
org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:135)
at
org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:122)
at org.apache.maven.surefire.Surefire.run(Surefire.java:129)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at
org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:225)
at
org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:747)
ros wrote:
>
> Here is refference about JPA annotation
>
> http://www.oracle.com/technology/products/ias/toplink/jpa/resources/toplink-jpa-annotations.html#OneToMany
>
> here is example:
>
> @Entity
> @Table(name="app_user")
> public class User extends BaseObject implements Serializable, UserDetails
> {
> ...
> protected Set<Entity> entitys = new HashSet<Entity>();
> ...
> @OneToMany(targetEntity=Entity.class, cascade=CascadeType.ALL,
> mappedBy="user", fetch = FetchType.LAZY)
> public Set<Entity> getEntitys() {
> return entitys;
> }
> ...
> public void setEntitys(Set<Entity> entitys) {
> this.entitys = entitys;
> }
> ...
> }
>
> @Entity
> @Table(name="entity")
> public class Entity extends BaseObject implements Comparable,
> Serializable,
> Cloneable {
> ..
> protected User user;
> ..
> @ManyToOne(optional=false)
> @JoinColumn(name="user_id", nullable=false, updatable=false)
> public User getUser() {
> return user;
> }
> ...
> public void setUser(User user) {
> this.user = user;
> }
> ...
> //hashCode and equils functions
> ...
> }
>
> Hope this helps.
>
>
>
> Fan wrote:
>>
>> what's the use of persistence.xml ??
>>
>> I saw only two following entries in the file, should I add a new entry
>> for club pojo ?
>>
>> <class>org.appfuse.model.User</class>
>> <class>org.appfuse.model.Role</class>
>>
>> I did try the following way:
>>
>> In my club POJO, I have
>>
>> @OneToMany
>> public Set<User> getUsers()
>> {
>> return users;
>> }
>>
>> in my user POJO, I have:
>>
>> @ManyToOne
>> @JoinColumn(name="clubID")
>> public Club getClub()
>> {
>> return club;
>> }
>>
>> so the result is:
>>
>> 1) I have one column called "clubID" in user table
>> 2) A table called "club_app_user" with two keys "Club_clubID", "users_id"
>> generated
>>
>> but when I have saved the user record with "clubID" being saved
>> successfully in user table, nothing did happen in "club_app_user" , in
>> other words, the "club_app_user" still empty record, or do I need to save
>> the record in "club_app_user" explicitly ?
>>
>>
>> ros wrote:
>>>
>>> Fan,
>>>
>>> About 1) in pom.xml there should be
>>>
>>> <dependency>
>>> <groupId>org.appfuse</groupId>
>>> <artifactId>appfuse-${web.framework}</artifactId>
>>> <version>${appfuse.version}</version>
>>> <type>warpath</type>
>>> <exclusions>
>>> <!-- This exclusion and the dependency following this
>>> one allow DAO framework switching. -->
>>> <!-- You only need these if you want to use JPA or
>>> iBATIS. See APF-565 for more information. -->
>>> <!-- It does no harm to leave it in for Hibernate, but
>>> it's not needed. -->
>>> <exclusion>
>>> <groupId>org.appfuse</groupId>
>>> <artifactId>appfuse-hibernate</artifactId>
>>> </exclusion>
>>> </exclusions>
>>> </dependency>
>>> <dependency>
>>> <groupId>org.appfuse</groupId>
>>> <artifactId>appfuse-${dao.framework}</artifactId>
>>> <version>${appfuse.version}</version>
>>> <exclusions>
>>> <exclusion>
>>> <groupId>org.appfuse</groupId>
>>> <artifactId>appfuse-data-common</artifactId>
>>> </exclusion>
>>> </exclusions>
>>> </dependency>
>>>
>>> Check / src / main / resources / META-INF / persistence.xml
>>>
>>>
>>> Fan wrote:
>>>>
>>>> Hey ros:
>>>>
>>>> 1)The original pom.xml already has the exclusion :
>>>>
>>>> <dependency>
>>>> <groupId>org.appfuse</groupId>
>>>> <artifactId>appfuse-${web.framework}</artifactId>
>>>> <version>${appfuse.version}</version>
>>>> <type>warpath</type>
>>>> <!-- This exclusion and the dependency following this one
>>>> allow DAO framework switching. -->
>>>> <!-- You only need these if you want to use JPA or iBATIS.
>>>> See APF-565 for more information. -->
>>>> <!-- It does no harm to leave it in for Hibernate, but it's
>>>> not needed. -->
>>>> <exclusions>
>>>> <exclusion>
>>>> <groupId>org.appfuse</groupId>
>>>> <artifactId>appfuse-hibernate</artifactId>
>>>> </exclusion>
>>>> </exclusions>
>>>> </dependency>
>>>>
>>>> 2) what did you mean by "Then add in to your poroject User and Role
>>>> pojos at appfuse namespace" ?
>>>>
>>>> 3) I did check the user pojo, it does has the foreign key club_clubID
>>>>
>>>> 4) Yup, I am using M5
>>>>
>>>> 5) I did include the bean definition in applicationContext.xml
>>>>
>>>> <bean class="org.appfuse.dao.spring.HibernateExtensionPostProcessor">
>>>> <property name="annotatedClasses">
>>>> <list>
>>>> <value>com.smartclub.model.Club</value>
>>>> <value>com.smartclub.model.Facility</value>
>>>> </list>
>>>> </property>
>>>> </bean>
>>>>
>>>> 6) I did include the mapping in hibernate.cfg.xml as well
>>>>
>>>> <hibernate-configuration>
>>>> <session-factory>
>>>> <mapping class="org.appfuse.model.User"/>
>>>> <mapping class="org.appfuse.model.Role"/>
>>>> <mapping class="com.smartclub.model.Club"/>
>>>> <mapping class="com.smartclub.model.Facility"/>
>>>> </session-factory>
>>>> </hibernate-configuration>
>>>>
>>>>
>>>> What else I have to check ??
>>>>
>>>>
>>>> ros wrote:
>>>>>
>>>>> Hi!
>>>>>
>>>>> You have to exclude AppFuse Data Common Package in your pom.xml. Then
>>>>> add in to your poroject User and Role pojos at appfuse namespace (as
>>>>> described in http://www.appfuse.org/display/APF/AppFuse+Core+Classes)
>>>>>
>>>>> Try to do mvn clean compile hibernate3:hbm2ddl and check database for
>>>>> user table structure. If it does not contains fields defined in User
>>>>> pojo of your project then AppFuse Data Common Package is not excluded.
>>>>>
>>>>> What is your version of appfuse, M5?
>>>>>
>>>>> Regards,
>>>>> ros
>>>>>
>>>>>
>>>>>
>>>>> Fan wrote:
>>>>>>
>>>>>> Hey Ros:
>>>>>>
>>>>>> I did add the related Object to both hibernate.cfg.xml and
>>>>>> applicationContext.xml. But it just does not work
>>>>>>
>>>>>> Or do you mind to show me your hibernate.cfg.xml and
>>>>>> applicationContext.xml ? I afraid I might do it wrongly
>>>>>>
>>>>>> Is that necessary to exclude the AppFuse Data Common Package ?
>>>>>>
>>>>>>
>>>>>> ros wrote:
>>>>>>>
>>>>>>> Hi!
>>>>>>>
>>>>>>> I resolve that by add my Contact object to both hibernate.cfg.xml
>>>>>>> and applicationContext.xml.
>>>>>>>
>>>>>>> Reffer to http://www.appfuse.org/display/APF/AppFuse+Core+Classes
>>>>>>>
>>>>>>> Hope this helps.
>>>>>>>
>>>>>>> ros
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Fan wrote:
>>>>>>>>
>>>>>>>> Ros,
>>>>>>>>
>>>>>>>> What's the fix ? I am facing the same error as you did
>>>>>>>>
>>>>>>>>
>>>>>>>> ros wrote:
>>>>>>>>>
>>>>>>>>> Right. Thanks Matt!
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>
>
--
View this message in context:
http://www.nabble.com/override-User-code-class-and-link-OneToMany-to-any-other-class-tf3217084s2369.html#a11448902
Sent from the AppFuse - User mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]