Dúvida composite-id

0 respostas
K
Pessoal, estou com dúvida sobre a criação de um chave composta eu criei a classe que representa a chave composta
@Embeddable
public class ClienteEmailPK implements Serializable{

    @ManyToOne(fetch=FetchType.EAGER)
    @JoinColumn(name="cli_email_cli_id", insertable=true, updatable=true)
    @Fetch(FetchMode.JOIN)
    @Cascade(CascadeType.SAVE_UPDATE)
    private Cliente cliente;

    @OneToMany(mappedBy="cliente", fetch=FetchType.LAZY)
    @Cascade(CascadeType.ALL)
    private EmailCliente emailCliente;;

}
a classe que vai usar a chave composta é
@Entity
@Table(name="cli_email", schema="Tecnicos")

public class EmailCliente implements Serializable {

    @EmbeddedId
    @Resolvable(colName="ID")
    private ClienteEmailPK id;

    @Column(name="cli_email_email", nullable=false)
    @Resolvable(colName="EMAIL")
    private String email;

    @ManyToOne(fetch=FetchType.EAGER)
    @JoinColumn(name="cli_email_cli_id", insertable=true, updatable=true)
    @Fetch(FetchMode.JOIN)
    @Cascade(CascadeType.SAVE_UPDATE)
    @Resolvable(colName="CLIENTE")
    private Cliente cliente;
e a outra classe é
@Entity
@Table(name="Cliente", schema="Tecnicos")
@SequenceGenerator(name="SEQ_CLI", sequenceName="SEQ_CLIENTE", allocationSize=1, initialValue=1)

public class Cliente implements Serializable {

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO, generator="SEQ_CLI")
    @Column(name="cli_id", nullable=false)
    @Resolvable(colName="ID")
    private Integer id;

    @Column(name="cli_codext")
    @Resolvable(colName="CÓDIGO")
    private Integer codigoExterno;

    @Column(name="cli_fili")
    @Resolvable(colName="FILIAL")
    private Integer filial;

    @Column(name="cli_razaosocial", length=80)
    @Resolvable(colName="RAZÃO SOCIAL")
    private String razaoSocial;

    @Column(name="cli_nomefantasia", length=80)
    @Resolvable(colName="NOME FANTASIA")
    private String nomeFantasia;

    @Column(name="cli_cnpj", length=20)
    private String cnpj;

    @Column(name="cli_inscest", length=30)
    private String InscEst;

    @Column(name="cli_endereco", length=200)
    private String endereco;

    @Column(name="cli_bairro", length=45)
    private String bairro;

    @Column(name="cli_cidade", length=50)
    private String cidade;

    @Column(name="cli_estado", length=2)
    private String estado;

    @Column(name="cli_cep", length=20)
    private String cep;

    @Column(name="cli_telefone", length=20)
    @Resolvable(colName="TELEFONE")
    private String telefone;

    @Column(name="cli_situreg", length=20)
    private String situ_reg;
    
    @Column(name="cli_emailPrincipal", length=150)
    @Resolvable(colName="EMAIL")
    private String emailPrincipal;

    @OneToMany(mappedBy="cliente", fetch=FetchType.LAZY)
    @Cascade(CascadeType.ALL)
    private Collection<EmailCliente> email;

    @ManyToMany(fetch=FetchType.LAZY)
    @JoinTable(name="tecnico_cliente", schema="Tecnicos",
            joinColumns=@JoinColumn(name="teccli_cli_id"),
            inverseJoinColumns=@JoinColumn(name="teccli_tec_id"))
    private Collection<Tecnicos> tecnicos;

    @ManyToMany(fetch=FetchType.LAZY)
    @JoinTable(name="questionario_cliente", schema="Tecnicos",
            joinColumns=@JoinColumn(name="cli_id"),
            inverseJoinColumns=@JoinColumn(name="ques_id"))
    private Collection<Questionario> questionarios;

gostaria de saber se da maneira que eu fiz está correto pois no banco minha chave primaria do emailCliente é idEmail + idCliente

Criado 22 de fevereiro de 2011
Respostas 0
Participantes 1