Skip to content

Instantly share code, notes, and snippets.

@diegolirio
Last active April 21, 2017 17:48
Show Gist options
  • Save diegolirio/abde1d451214592ef3353b16fe9c7653 to your computer and use it in GitHub Desktop.
Save diegolirio/abde1d451214592ef3353b16fe9c7653 to your computer and use it in GitHub Desktop.
JPA-Relacionamento-com-PK-composta
VeiculoDisponivel.java
@Entity
@Table(name = "TDVADM.T_FCF_VEICULODISP")
@IdClass(VeiculoDisponivelPK.class)
public class VeiculoDisponivel {

	@Id @Column(name="FCF_VEICULODISP_CODIGO")
	private String codigo;

	@Id @Column(name="FCF_VEICULODISP_SEQUENCIA")
	private String sequencia;

	public String getCodigo() {
		return codigo;
	}
	public void setCodigo(String codigo) {
		this.codigo = codigo;
	}
	public String getSequencia() {
		return sequencia;
	}
	public void setSequencia(String sequencia) {
		this.sequencia = sequencia;
	}
}
VeiculoDisponivelPK.java
@Embeddable
public class VeiculoDisponivelPK implements Serializable {

	private static final long serialVersionUID = 1L;

	@Column(name="FCF_VEICULODISP_CODIGO")
	private String codigo;
	 
	@Column(name="FCF_VEICULODISP_SEQUENCIA")
	private String sequencia;
	
	public VeiculoDisponivelPK() {}

    	public VeiculoDisponivelPK(String codigo, String sequencia) {
        	this.codigo = codigo;
        	this.codigo = codigo;
    	}	
	
	public String getCodigo() {
		return codigo;
	}
	public void setCodigo(String codigo) {
		this.codigo = codigo;
	}
	public String getSequencia() {
		return sequencia;
	}
	public void setSequencia(String sequencia) {
		this.sequencia = sequencia;
	}

    	public boolean equals(Object object) {
	        if (object instanceof VeiculoDisponivelPK) {
	        	VeiculoDisponivelPK pk = (VeiculoDisponivelPK)object;
	            return codigo.equals(pk.codigo) && sequencia == pk.sequencia;
	        } else return false;
    	}
    	public int hashCode() {
        	return (codigo.hashCode() + sequencia.hashCode());
    	}
}
Solicitacao.java
@Entity
@Table(name = "T_FCF_SOLVEIC")
public class Solicitacao {

	@Id
	@Column(name="FCF_SOLVEIC_COD")
	private int codigo;
	
	@ManyToOne(targetEntity = VeiculoDisponivel.class)
	@JoinColumns({ @JoinColumn(name = "FCF_VEICULODISP_CODIGO"),
        		   @JoinColumn(name = "FCF_VEICULODISP_SEQUENCIA") })
	private VeiculoDisponivel veiculoDisponivel;
	
	public int getCodigo() {
		return codigo;
	}
	public void setCodigo(int codigo) {
		this.codigo = codigo;
	}
	public VeiculoDisponivel getVeiculoDisponivel() {
		return veiculoDisponivel;
	}
	public void setVeiculoDisponivel(VeiculoDisponivel veiculoDisponivel) {
		this.veiculoDisponivel = veiculoDisponivel;
	}
}
Scripts criados
Tabela T_FCF_VEICULODISP
create table T_FCF_VEICULODISP ( FCF_VEICULODISP_CODIGO VARCHAR2(255) not null,
				 FCF_VEICULODISP_SEQUENCIA VARCHAR2(255) not null );

alter table T_FCF_VEICULODISP add primary key (FCF_VEICULODISP_CODIGO, FCF_VEICULODISP_SEQUENCIA);
Tabela T_FCF_SOLVEIC
create table T_FCF_SOLVEIC ( fcf_solveic_cod NUMBER(10) not null,
							 fcf_veiculodisp_codigo VARCHAR2(255),
							 fcf_veiculodisp_sequencia VARCHAR2(255) );

alter table T_FCF_SOLVEIC add primary key (FCF_SOLVEIC_COD);

alter table T_FCF_SOLVEIC add constraint FK_EFE3JWBKQ4334XSQ61S6UYIUQ 
foreign key (FCF_VEICULODISP_CODIGO, FCF_VEICULODISP_SEQUENCIA)
references T_FCF_VEICULODISP (FCF_VEICULODISP_CODIGO, FCF_VEICULODISP_SEQUENCIA);

Referencias:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment