Is there a possibility to make a @OneToMany
relation without Primary Key in the child table?
Follow my two entities.
Entity Noticia
:
@Entity
@Table(name = "NOTICIA")
@NamedQueries({
@NamedQuery(name = "Noticia.findAll", query = "SELECT n FROM Noticia n"),
@NamedQuery(name = "Noticia.findAllByDate", query = "SELECT n FROM Noticia n WHERE n.dhCadastro BETWEEN :startDate AND :endDate")
})
public class Noticia implements Serializable {
private static final long serialVersionUID = 1L;
@Id
//@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "cdNoticia")
private Long cdNoticia;
@Basic(optional = false)
@Column(name = "cdVeiculo")
private long cdVeiculo;
@Column(name = "nmAutor")
private String nmAutor;
@Column(name = "cdColunista")
private Short cdColunista;
@Basic(optional = false)
@Column(name = "cdSecao")
private short cdSecao;
@Column(name = "dsTitulo")
private String dsTitulo;
@Lob
@Column(name = "dsTexto")
private String dsTexto;
@Basic(optional = false)
@Column(name = "dsURL")
private String dsURL;
@Column(name = "cdHash")
private String cdHash;
@Basic(optional = false)
@Column(name = "dtNoticia")
@Temporal(TemporalType.DATE)
private Date dtNoticia;
@Basic(optional = false)
@Column(name = "hrNoticia")
@Temporal(TemporalType.TIME)
private Date hrNoticia;
@Column(name = "dhCadastro")
@Temporal(TemporalType.TIMESTAMP)
private Date dhCadastro;
@Basic(optional = false)
@Column(name = "idTipo")
private String idTipo;
@Basic(optional = false)
@Column(name = "idDigitalizada")
private String idDigitalizada;
@Column(name = "isTransicao")
private Integer isTransicao;
@Column(name = "isElasticSearch")
private Integer isElasticSearch;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "noticia", orphanRemoval = true)
private List<Noticiaimagem> noticiaimagemCollection = new ArrayList<Noticiaimagem>();
public Noticia() {
}
public Long getCdNoticia() {
return cdNoticia;
}
public void setCdNoticia(Long cdNoticia) {
this.cdNoticia = cdNoticia;
}
public long getCdVeiculo() {
return cdVeiculo;
}
public void setCdVeiculo(long cdVeiculo) {
this.cdVeiculo = cdVeiculo;
}
public String getNmAutor() {
return nmAutor;
}
public void setNmAutor(String nmAutor) {
this.nmAutor = nmAutor;
}
public Short getCdColunista() {
return cdColunista;
}
public void setCdColunista(Short cdColunista) {
this.cdColunista = cdColunista;
}
public short getCdSecao() {
return cdSecao;
}
public void setCdSecao(short cdSecao) {
this.cdSecao = cdSecao;
}
public String getDsTitulo() {
return dsTitulo;
}
public void setDsTitulo(String dsTitulo) {
this.dsTitulo = dsTitulo;
}
public String getDsTexto() {
return dsTexto;
}
public void setDsTexto(String dsTexto) {
this.dsTexto = dsTexto;
}
public String getDsURL() {
return dsURL;
}
public void setDsURL(String dsURL) {
this.dsURL = dsURL;
}
public String getCdHash() {
return cdHash;
}
public void setCdHash(String cdHash) {
this.cdHash = cdHash;
}
public Date getDtNoticia() {
return dtNoticia;
}
public void setDtNoticia(Date dtNoticia) {
this.dtNoticia = dtNoticia;
}
public Date getHrNoticia() {
return hrNoticia;
}
public void setHrNoticia(Date hrNoticia) {
this.hrNoticia = hrNoticia;
}
public Date getDhCadastro() {
return dhCadastro;
}
public void setDhCadastro(Date dhCadastro) {
this.dhCadastro = dhCadastro;
}
public String getIdTipo() {
return idTipo;
}
public void setIdTipo(String idTipo) {
this.idTipo = idTipo;
}
public String getIdDigitalizada() {
return idDigitalizada;
}
public void setIdDigitalizada(String idDigitalizada) {
this.idDigitalizada = idDigitalizada;
}
public Integer getIsTransicao() {
return isTransicao;
}
public void setIsTransicao(Integer isTransicao) {
this.isTransicao = isTransicao;
}
public Integer getIsElasticSearch() {
return isElasticSearch;
}
public void setIsElasticSearch(Integer isElasticSearch) {
this.isElasticSearch = isElasticSearch;
}
public List<Noticiaimagem> getNoticiaimagemCollection() {
return noticiaimagemCollection;
}
public void setNoticiaimagemCollection(List<Noticiaimagem> noticiaimagemCollection) {
this.noticiaimagemCollection = noticiaimagemCollection;
}
}
Entity Noticiaimagem
:
@Entity
@Table(name = "NOTICIAIMAGEM")
public class Noticiaimagem implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@ManyToOne
@JoinColumn(name = "cdNoticia", nullable = false)
@MapsId
private Noticia noticia;
@Column
private String nmImagem;
@Column(nullable = false)
private String nmExtensao;
@Column
private Float nrTamanho;
@Column(columnDefinition = "UNSIGNED SMALLINT(5)")
private Integer nrAltura;
@Column(columnDefinition = "UNSIGNED SMALLINT(5)")
private Integer nrLargura;
@Column(columnDefinition = "UNSIGNED TINYINT(3)")
private Integer nrOrdem;
@Column(columnDefinition = "UNSIGNED MEDIUMINT(8)")
private Integer cdTipoNoticiaImagem;
public Noticiaimagem() {
}
public Noticia getNoticia() {
return noticia;
}
public void setNoticia(Noticia noticia) {
this.noticia = noticia;
}
public String getNmImagem() {
return nmImagem;
}
public void setNmImagem(String nmImagem) {
this.nmImagem = nmImagem;
}
public String getNmExtensao() {
return nmExtensao;
}
public void setNmExtensao(String nmExtensao) {
this.nmExtensao = nmExtensao;
}
public Float getNrTamanho() {
return nrTamanho;
}
public void setNrTamanho(Float nrTamanho) {
this.nrTamanho = nrTamanho;
}
public Integer getNrAltura() {
return nrAltura;
}
public void setNrAltura(Integer nrAltura) {
this.nrAltura = nrAltura;
}
public Integer getNrLargura() {
return nrLargura;
}
public void setNrLargura(Integer nrLargura) {
this.nrLargura = nrLargura;
}
public Integer getNrOrdem() {
return nrOrdem;
}
public void setNrOrdem(Integer nrOrdem) {
this.nrOrdem = nrOrdem;
}
public Integer getCdTipoNoticiaImagem() {
return cdTipoNoticiaImagem;
}
public void setCdTipoNoticiaImagem(Integer cdTipoNoticiaImagem) {
this.cdTipoNoticiaImagem = cdTipoNoticiaImagem;
}
}
The database is legacy and I can not change its structure. The NOTICIAIMAGEM
table has more than 6 million records in production. The same table does not have Primary Key and neither Foreing Key . The code above was generated automatically by the NetBeans entity generator.