Ah seems I was incorrect there, the PersonRequest model will need an id with appropriate getters and setters (auto generated).
Try that and it should work.

Cheers
Aled

syg6 wrote:
Well, if I get rid of the @Id tag in PersonRequest I get this error:

No identifier specified for entity: com.mycompany.app.model.PersonRequest

And if I put an @Id tag on getPerson() and getRequest() I get this error:

...AnnotationException: mappedBy reference an unknown target entity
property: com.mycompany.app.model.PersonRequest.request in
com.mycompany.app.model.Request.personRequests

Strange error. I have to look into how to do this, make a composite key,
hopefully without using @Embedded or @Embeddable ... That would just
complicate matters more ...

Please let me know if you find out how to do this ...

Cheers,
Bob


Aled Rhys Jones wrote:
I'll have to check when I get home the exact way, but you definetly don't
need a primary key, just the composite key of person_id and request_id.
Not 100% sure, but I think when you build the appfuse project then the one
to many and many to one annotations will do the id's for you.
So all you need in the PersonRequest model is the getters and setters.

Cheers
Aled

-----Original Message-----
From: syg6 [mailto:[EMAIL PROTECTED] Sent: 09 July 2007 15:21
To: [email protected]
Subject: [appfuse-user] RE: RE: many-to-many with attribute ... again


I figured it out. My fault. Forgot to put @Entity in the Person class!

One last question - I think PersonRequest should have a combination of
'person_id' and 'request_id' as its primary key, how can I do that?
Currently it has its own auto-numeric key but I think it's more correct to
use a composite key ...

Thanks again,
Bob


syg6 wrote:
Yup. I have all 3 classes in my hibernate.cfg.xml:

<mapping class="com.mycompany.app.model.Person"/>
<mapping class="com.mycompany.app.model.Request"/>
<mapping class="com.mycompany.app.model.PersonRequest"/>

I also tried deleting PersonRequest from the hibernate.cfg.xml because I
wasn't sure if it needed to be defined or not. But I got a different
error
so, I guess it does.

I'll keep trying ...

Thanks!
Bob



Aled Rhys Jones wrote:
Yeah, you have to have a model for PersonRequest since you need to know
the
date object it holds.  Any other method and it's not many to many.

Regarding the error, have you defined all the models in the hibernate
configuration file (hibernate.cfg.xml)?


-----Original Message-----
From: syg6 [mailto:[EMAIL PROTECTED] Sent: 09 July 2007 14:08
To: [email protected]
Subject: [appfuse-user] RE: many-to-many with attribute ... again


Hmm ... well, ideally I was hoping to NOT have to create any extra model
classes. It seems I have to at least create one, right? The
PersonRequest
class. Well, at least it seems I don't have to create the
PersonRequestPK
class!

Anyway, I tried your example and when I run mvn test-compile
hibernate3:hbm2ddl I get an error:

AnnotationException: @OneToOne or @ManyToOne on
com.mycompany.app.model.PersonRequest.person references an unknown
entity:
com.mycompany.app.model.Person

Both Person and Request exist ... Both have the following annotations:

private Long id;
@Id @GeneratedValue(strategy = GenerationType.AUTO) public Long getId() {
  return id;
}

I am not sure what the problem is ... but then I am not an Annotations
or
Hibernate expert. I'll keep trying. And further help much appreciated!

Cheers,
Bob




Aled Rhys Jones wrote:
Hi Bob

Ok then, Yes. :-)

http://www.hibernate.org/hib_docs/annotations/reference/en/html_single/

I've got the same scenario in my app.

Example Request model:

@Entity
public class Request {

      private List<PersonRequest> personRequests;

      ......

      @OneToMany(mappedBy="request")

      @OrderBy("date")

      public List<PersonRequest> getPersonRequests () {

            return personRequests;

      }

      .....

}

Example Person model:

@Entity

public class Person {

      private List<PersonRequest> personRequests;

      ......

      @OneToMany(mappedBy="person")

      @OrderBy("date")

      public List<PersonRequest> getPersonRequests () {

            return personRequests;

      }

      .....

}

Example PersonRequest model:

@Entity

public class PersonRequest:

      private Person person;

      private Request request;

      .....

      @ManyToOne

      @JoinColumn(name="person_id")

      public Person getPerson(){

            return person;

      }

      @ManyToOne

      @JoinColumn(name="request_id")

      public Request getRequest(){

            return request;

      }

      .......

}

You may want to add details about cascading and the like.

You'll obviously need to put annotations on your getId method's so
hibernate
know to use the id fields as primary keys.

Just add in the other fields such as description as normal.

Hope this helps.
Cheers

Aled

-----Original Message-----
From: syg6 [mailto:[EMAIL PROTECTED] Sent: 09 July 2007 12:18
To: [email protected]
Subject: [appfuse-user] many-to-many with attribute ... again

Hello all.

I had this problem about a year ago and just couldn't get Hibernate and

XDoclet to play nice. Basically I have this:

Request

id

description

Person

id

name

PersonRequest

idPerson

idRequest

date
And I would like to know how to do with Annotations. The last time I
wound

up hand-hacking the hibernate mapping files and creating two
intermediate

'composite' classes -- let's call them PersonRequest and
PersonRequestPK
--

and having to do all of the DAO by hand.

Is there any way to do this auto-magically with Annotations?

Please say yes ...

Cheers,

Bob

--

View this message in context:

http://www.nabble.com/many-to-many-with-attribute-...-again-tf4048626s2369.h
tml#a11499869

Sent from the AppFuse - User mailing list archive at Nabble.com.

---------------------------------------------------------------------

To unsubscribe, e-mail: [EMAIL PROTECTED]

For additional commands, e-mail: [EMAIL PROTECTED]



--
View this message in context:

http://www.nabble.com/many-to-many-with-attribute-...-again-tf4048626s2369.h
tml#a11501267
Sent from the AppFuse - User mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



--
View this message in context:
http://www.nabble.com/many-to-many-with-attribute-...-again-tf4048626s2369.h
tml#a11502757
Sent from the AppFuse - User mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]





---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to