Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [eclipselink-users] question about one-to-many

Hi Zachary,

> If I'm understanding your question correctly you want a bi-directional
> relationship between Zutat and Rezept with Rezept being the owning side
> of the relationship.

no, that I figured. I want a uni-directional mapping from Rezept 1 -> 8 Zutat
(using @OneToMany).

Best regards, --- Jan.

>  Rezept needs to have:
> 
> @OneToMany(mappedBy="rezept")
> private List<Zutat> zutats;
> 
> and Zutat needs to have:
> 
> @ManyToOne
> @JoinColumn(name="rezid" referencedColumnName="id")
> private Rezept rezept;  //note that the field name is what is used in
> the 'mappedBy' attribute on the owning side
> 
> Hopefully that helps,
> 
> -zach
> 
> On Oct 14, 2008, at 9:59 AM, Jan Kriesten wrote:
> 
>>
>> Hi,
>>
>> I've an understanding problem using one-to-many:
>>
>> I've got the following tables:
>>
>> REZ_REZEPTE:
>> id: int
>> name: String
>>
>> REZ_ZUT:
>> id: int
>> rezid: int
>> name: String
>>
>> Now I want to have a List of all REZ_ZUT in REZ_REZEPTE.
>>
>> This actually works:
>>
>> @Entity
>> @Table { val name = "REZ_REZEPTE" }
>> @serializable
>> class Rezept {
>>  @Id @GeneratedValue
>>  @BeanProperty var id: Int = _id
>>  @BeanProperty var name: String = _name
>>  @OneToMany { val cascade = Array( CascadeType.ALL ), val targetEntity =
>> classOf[Zutat], val mappedBy = "rezept" }
>>  @BeanProperty var zutaten: JList[Zutat] = null
>> }
>>
>> But this needs class Zutat mapping back to 'Rezept'.
>>
>> It should work to use
>>
>> @OneToMany { val cascade = Array( CascadeType.ALL ), val targetEntity =
>> classOf[Zutat], val fetch=FetchType.EAGER }
>>  @JoinColumn { val name = "rezid" }
>>  @BeanProperty var zutaten: JList[Zutat] = null
>>
>> but that give an error:
>>
>> Internal Exception: Exception [EclipseLink-7160] (Eclipse Persistence
>> Services -
>> 1.0.1 (Build 20080905)):
>> org.eclipse.persistence.exceptions.ValidationException
>> Exception Description: @OneToMany for attribute name [zutaten] in
>> entity class
>> [class Rezept] should not have @JoinColumn(s) specified. In the case
>> where the
>> @OneToMany is not mapped by another entity (that is, it is the owning
>> side and
>> is uni-directional), it should specify (optional through defaulting) a
>> @JoinTable.
>>
>> I tried to use the xml-variant instead (which at least allows to define
>> join-columns):
>>
>>   <entity class="Rezept">
>>     <attributes>
>>       <id name="id"><generated-value /></id>
>>       <one-to-many name="zutaten" target-entity="Zutat" fetch="EAGER">
>>         <join-column name="rezid"/>
>>       </one-to-many>
>>     </attributes>
>>   </entity>
>>
>> But that gives a SQL-Exception - and I really don't know why
>> EclipseLink is
>> trying to access a table named "rez_rezepte_rez_zut":
>>
>> Exception [EclipseLink-4002] (Eclipse Persistence Services - 1.0.1 (Build
>> 20080905)): org.eclipse.persistence.exceptions.DatabaseException
>> Internal Exception:
>> com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Table
>> 'rez_rezepte_rez_zut' doesn't exist
>> Error Code: 1146
>> Call: SELECT t1.ID, t1.EINHEIT, t1.MENGE_MAX, t1.MENGE_MIN, t1.MENGE_ORG,
>> t1.NAME, t1.REZID FROM REZ_REZEPTE_REZ_ZUT t0, REZ_ZUT t1 WHERE
>> ((t0.Rezept_ID =
>> ?) AND (t1.ID = t0.zutaten_ID))
>>
>> Can someone give me some insight where I'm going wrong?
>>
>> Best regards, --- Jan.
>>
>> _______________________________________________
>> eclipselink-users mailing list
>> eclipselink-users@xxxxxxxxxxx
>> https://dev.eclipse.org/mailman/listinfo/eclipselink-users
> 
> _______________________________________________
> eclipselink-users mailing list
> eclipselink-users@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/eclipselink-users
> 

-- 
--------------------------------------------------
sign of renitence gmbH & co. kg
Büro Hamburg
Kelterstr. 23
D-22391 Hamburg
Germany

fon +49-40-27805130
fax +49-40-27805131

www.renitence.de
www.webnix.de
www.projektnix.de

Geschäftsleitung
Jörg Schmidt-Stein
Susanne Stein
Jan Kriesten

Gerichtsstand Nürnberg
hr a 12518

USt.-IdNr.: DE194293429
St.-Nr. 238 174 01201


Back to the top