如何使实体可以从两个不同的实体访问JPA

时间:2017-04-12 14:03:32

标签: java jpa

您好我是JPA的新手,我想知道是否可以将两个实体映射到另一个实体?

例如,假设我有:

-entity1

public class LieuEnseignement implements Serializable {
@Id
@Column(name = "NO_ORGNS", nullable = false)
private Long noOrganisme;
@Column(name = "NO_ADR_GEOGR")
private Long noAdresseGeographique;
@OneToMany(mappedBy="etabEns", cascade = CascadeType.ALL)
private Set<AdresseGeographique> adresseGeographique;

-entity 2

public class EtablissementEnseignement implements Serializable {
@Column(name = "NO_ORGNS", nullable = false)
private Long noOrganisme;
@Column(name="NO_ADR_GEOGR")
private Long noAdresseGeographique;
@OneToMany(mappedBy="etabEns", cascade = CascadeType.ALL)
private Set<AdresseGeographique> adresseGeographique;

-entity 3

public class AdresseGeographique implements Serializable{
@Column(name="NO_ADR", nullable = false)
private Long noAdresse;
@Column(name="LIGNE1_ADR", nullable = false, length = 40)
private String ligne1AdrGeographique;
@Column(name="LIGNE2_ADR", nullable = false, length = 40)
private String ligne2AdrGeographique;
@Column(name="VILLE", nullable = false, length = 46)
private String villeAdrGeographique;
@Column(name="PROV_PAYS", nullable = false, length = 30)
private String provincePaysAdrGeographique;
@Column(name="CD_POSTAL", nullable = false, length = 6)
private String codePostaleAdrGeographique;
@Column(name="CD_MUNICIPALITE", nullable = false, length = 5)
private String codeMunicipaliteAdrGeographique;
@Column(name="POSTN_X", nullable = false)
private String positionXAdrGeographique;
@Column(name="POSTN_Y", nullable = false)
private String positionYAdrGeographique;
@ManyToOne
@JoinColumn(name = "NO_ADR", referencedColumnName = "NO_ADR_GEOGR", insertable=false, updatable=false)
private EtablissementEnseignement etabEns;
@ManyToOne
@JoinColumn(name = "NO_ADR", referencedColumnName = "NO_ADR_GEOGR", insertable=false, updatable=false)
private LieuEnseignement lieuEns; 

所以基本上实体1和2从不同时调用实体3。我想我可以宣布两个单独的连接列,但显然这是不可能的。

edit1:至于为什么我没有为实体1和2使用继承是因为它们完全不同但我没有把所有数据都包含在其中,因为我没有发现它与问题有关。

提前感谢您的帮助。

0 个答案:

没有答案