OneToOne mapovani
Pavel Zelenka
Zelenka na mediaservis.cz
Čtvrtek Leden 14 12:54:42 CET 2010
při pokusu o persist objektu Vykaz to pořád neplnilo pole idvykaz nicméně
už jsem se dobral funkčního výsledku:
@Entity
public class Vykaz implements Serializable {
@Id
@Column(name="idvykaz")
private Integer idvykaz;
@OneToOne(fetch = FetchType.EAGER, cascade=CascadeType.ALL,
mappedBy="vykaz")
private VykazKontrola kontrola;
....
@Entity
@Table(name = "vykaz_kontrola")
public class VykazKontrola implements Serializable {
@Id
@Column(name="idvykaz", insertable=false, updatable=false)
private Integer idvykaz;
@OneToOne
@JoinColumn(name="idvykaz", referencedColumnName="idvykaz")
private Vykaz vykaz;
Od:
Roman Zakutny <roman.zakutny na gmail.com>
Komu:
Java <konference na java.cz>
Datum:
14.01.2010 11:22
Předmět:
Re: OneToOne mapovani
Odeslal:
konference-bounces na java.cz
Zdravim,
mohli by Ste presnejsie zadefinovat, co znamena "nefunguje"?
1) Hibernate hadze vynimku?
2) Pri nacitani sa Vam mapovane objekty inicializuju na null?
3) Alebo pri perzistencii "rodicovskej" entity sa Vam neulozi ten
"potomok"?
Vzhladom na to, ze ide o zdielany primarny kluc, tak by som napisal nieco
ako (bez vyskusania, ale takto som to pouzival):
@Entity
public class Vykaz implements Serializable {
@Id
private Long idvykaz;
//optional = true -> nemusi existovat korespondujuci riadok
//cascade = CascadeType.ALL -> zafunguje kaskada pri vsetkych JPA
operaciach
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER, optional
= true)
@PrimaryKeyJoinColumn // pripadne pouzit @JoinColumn, ak pojde o cudzi
kluc
private VykazKontrola kontrola;
}
@Entity
public class VykazKontrola implements Serializable {
@Id
private Long idvykaz;
public VykazKontrola() {};
public VykazKontrola(Vykaz vykaz) { this.vykaz = vykaz; };
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER,
mappedBy="kontrola") //toto umozni bidirectional mapovanie
private Vykaz vykaz;
}
Nikdy som sa nestretol s tym, ze by @PrimaryKeyJoinColumn bolo nad oboma
atributmi. Netusim vsak, ci to moze sposobit problem.
Precitajte si este tento prispevok. Usetri mi to dalsich par riadkov;)
https://forum.hibernate.org/viewtopic.php?p=2398781
S pozdravom Roman.
2010/1/14 Pavel Zelenka <Zelenka na mediaservis.cz>
Zdravim,
mohli byste mi poradit jak spravne provest JPA mapovani nasledujicich
tabulek?
tabulka VYKAZ
idvykaz
popis
tabulka VYKAZ_KONTROLA
idvykaz
datum
k řádku v tabulce VYKAZ může existovat 1 nebo žádný řádek v tabulce
VYKAZ_KONTROLA
nasledujici mapovani nefunguje
@Entity
public class Vykaz implements Serializable {
@Id
private Integer idvykaz;
@OneToOne
@PrimaryKeyJoinColumn
private VykazKontrola kontrola;
....
@Entity
@Table(name = "vykaz_kontrola")
public class VykazKontrola implements Serializable {
@Id
private Integer idvykaz;
@OneToOne(fetch = FetchType.EAGER, mappedBy="kontrola")
@PrimaryKeyJoinColumn
private Vykaz vykaz;
Díky za pomoc
Pavel Zelenka
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://amaio.cz/pipermail/konference/attachments/20100114/f27c3221/attachment.htm>
Další informace o konferenci Konference