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 <[email protected]>
Komu:
Java <[email protected]>
Datum:
14.01.2010 11:22
Předmět:
Re: OneToOne mapovani
Odeslal:
[email protected]
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 <[email protected]>
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