Hallo beste p&w'ers,
Ben momenteel wat aan het stoeien met de JPA om van de mapping files af te geraken
en alles met annotations te mappen.
Nu ben ik het volgende probleem tegen het lijf gelopen:
http://forum.java.sun.com...essageID=9552448&tstart=0
Op zich werkt het wel zoals het daar werkt, dus een extra pk aanmaken met daarin de primitieve types,
maar ik had graag gehad dat mijn id gewoon kon bestaan uit de 2 complexe types waarnaar die keys verwijzen.
Hoe ik het nu heb:
Wat ik dus ongeveer zou willen is dit:
Aangezien hij toch genoeg meta data heeft met de name in de joincolumn om te weten in welke kolom hij het moet opslagen en dmv de @Id in programmer weet hij de value die hij daar moet gaan opslaan.
Wanneer ik dat laatste toepas met dan nog een toegevoegde @Column die +/- hetzelfde bevat als de join column krijg ik serialization & eof errors.
Graag jullie inzichten.
Ben momenteel wat aan het stoeien met de JPA om van de mapping files af te geraken
en alles met annotations te mappen.
Nu ben ik het volgende probleem tegen het lijf gelopen:
http://forum.java.sun.com...essageID=9552448&tstart=0
Op zich werkt het wel zoals het daar werkt, dus een extra pk aanmaken met daarin de primitieve types,
maar ik had graag gehad dat mijn id gewoon kon bestaan uit de 2 complexe types waarnaar die keys verwijzen.
Hoe ik het nu heb:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
| @Entity @Table(name="buddies") public class Buddy implements Serializable { /** * */ private static final long serialVersionUID = -8580361165914133828L; @EmbeddedId private BuddyPK pk = new BuddyPK(); @ManyToOne @JoinColumn(name="initiatorid", nullable=false, insertable=false, updatable=false) private Programmer initiator; @ManyToOne @JoinColumn(name="accepteeid", nullable=false, insertable=false, updatable=false) private Programmer buddy; private Boolean validated = false; public Buddy(){} public Buddy(Programmer initiator, Programmer buddy) { super(); this.initiator = initiator; this.buddy = buddy; // dit vind ik persoonlijk nogal ranzig pk.initiatorid = initiator.getProgrammerid(); pk.accepteeid = buddy.getProgrammerid(); } /* ..... accessor methodes even weggelaten ..... */ } @Embeddable class BuddyPK implements Serializable { /** * */ private static final long serialVersionUID = -6697275691013319892L; public int accepteeid; public int initiatorid; } |
Wat ik dus ongeveer zou willen is dit:
code:
1
2
3
4
5
6
7
8
9
| @Id
@ManyToOne
@JoinColumn(name="initiatorid", nullable=false)
private Programmer initiator;
@Id
@ManyToOne
@JoinColumn(name="accepteeid", nullable=false)
private Programmer buddy; |
Aangezien hij toch genoeg meta data heeft met de name in de joincolumn om te weten in welke kolom hij het moet opslagen en dmv de @Id in programmer weet hij de value die hij daar moet gaan opslaan.
Wanneer ik dat laatste toepas met dan nog een toegevoegde @Column die +/- hetzelfde bevat als de join column krijg ik serialization & eof errors.
Graag jullie inzichten.
If it ain't broken it doesn't have enough features