zdravim,
mam 2 tabulky, t_company a t_company_contact a chcel som ich spojit
pomocu Hibernate nasledovne:
tabulka t_company ma primarny kluc id, a tabulka t_company_contact ma
svoj primarny kluc id, a cudzi kluc fk_company_id do tabulky t_company
teda je tu vztah jedna Firma moze mat viac kontaktov , teda 1:N.
kedze s Hibernate zacinam, chcem poprosit ci tu vidite nieco co je chybne.
kedy je potrebne pouzit mappedBy, v mojom pripade mappedBy="company".
a kedy pouzit ? do triedy Company.java
@Cascade(org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
a do triedy CompanyContact.java:
@Cascade(org.hibernate.annotations.CascadeType.SAVE_UPDATE)
pouzivam metody Session.{save, update, saveOrUpdate}, teda nepouzivam JPA.
subor Company.java:
@Entity @Table(name="company")
@javax.persistence.SequenceGenerator(
name="seq_company",
sequenceName="s_company",
allocationSize=1
)
public class Company extends BaseObject {
private Long id;
private String name = null;
private String address = null;
public Company() {}
@OneToMany (fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "fk_company_id", nullable = false)
private List<CompanyContact> companyContacts;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE,
generator="seq_company")
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
......
}
subor CompanyContact.java:
@Entity @Table(name="shipper_contact")
@javax.persistence.SequenceGenerator(
name="seq_shipper_contact",
sequenceName="s_shipper_contact",
allocationSize=1
)
public class CompanyContact extends BaseObject {
private Long id;
private String name = null;
public CompanyContact() {}
@ManyToOne (fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "fk_company_id", nullable = false)
private Company company;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE,
generator="seq_company_contact")
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
....
}
dakujem
Ivan