Boa tarde amigos,
Estou com um problema e acho que vocês saberão me ajudar com facilidade. Eu tenho um entity que possui uma chave composta. Para efetuar esse mapeamento tenho as seguintes classes:
1 - asSistemaModuloPK
import java.io.Serializable;
import java.math.BigInteger;
import javax.persistence.Embeddable;
@Embeddable
public class asSistemaModuloPK implements Serializable {
private String sistema;
private BigInteger modulo;
public asSistemaModuloPK() {
}
public asSistemaModuloPK(String sistema, BigInteger modulo) {
this.sistema = sistema;
this.modulo = modulo;
}
@Override
public int hashCode() {
int hash = 0;
hash += (sistema != null ? sistema.hashCode() : 0);
hash += (modulo != null ? modulo.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof asSistemaModuloPK)) {
return false;
}
asSistemaModuloPK other = (asSistemaModuloPK) object;
if ((this.sistema == null && other.sistema != null) ||
(this.sistema != null && !this.sistema.equals(other.sistema))) {
return false;
}
if ((this.modulo == null && other.modulo != null) ||
(this.modulo != null && !this.modulo.equals(other.modulo))) {
return false;
}
return true;
}
@Override
public String toString() {
return "websis.model.as.asSistemaModuloPK[sistema=" + sistema + ", modulo=" + modulo + "]";
}
public BigInteger getModulo() {
return modulo;
}
public void setModulo(BigInteger modulo) {
this.modulo = modulo;
}
public String getSistema() {
return sistema;
}
public void setSistema(String sistema) {
this.sistema = sistema;
}
}
2 - asSistemaModulo
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
@Entity
@Table(name = "assistema_modulo")
@NamedQueries
({
@NamedQuery(name = "asSistemaModulo.searchAll", query = "select e from asSistemaModulo e"),
@NamedQuery(name = "asSistemaModulo.searchFgAtivo", query = "select e from asSistemaModulo e where e.fgAtivo = :fgAtivo"),
@NamedQuery(name = "asSistemaModulo.searchById", query = "select e from asSistemaModulo e where e.asSistemaModuloPK.sistema = :sistema and e.asSistemaModuloPK.modulo = :modulo")
})
public class asSistemaModulo implements Serializable {
/* Campo de chave primária embutido */
@EmbeddedId
private asSistemaModuloPK asSistemaModuloPK;
private static final long serialVersionUID = 1L;
@GeneratedValue(strategy = GenerationType.AUTO)
@Id
@ManyToOne
@JoinColumn(name="sistema", referencedColumnName="id_sistema", insertable = false, updatable = false)
private asSistema sistema;
@Id
@ManyToOne
@JoinColumn(name="modulo", referencedColumnName="id_modulo", insertable = false, updatable = false)
private asModulo modulo;
@Column(name = "fg_ativo", nullable = false)
private String fgAtivo;
public asSistemaModulo() {
}
public asSistema getSistema() {
return sistema;
}
public void setSistema(asSistema sistema) {
this.sistema = sistema;
}
public asModulo getModulo() {
return modulo;
}
public void setModulo(asModulo modulo) {
this.modulo = modulo;
}
public String getFgAtivo() {
return fgAtivo;
}
public void setFgAtivo(String fgAtivo) {
this.fgAtivo = fgAtivo;
}
}
As queries estão funcionando perfeitamente, porém estou com dificuldades de como fazer os inserts, updades e deletes. Alguém teria algum exemplo.
Estou tentando fazer da seguinte forma:
/* Grava o objeto no banco */
public String save(asSistemaModulo asSistemaModuloPar) {
try {
/* Instancia objetos */
em = getEntityManager();
em.getTransaction().begin();
em.persist(asSistemaModuloPar);
em.getTransaction().commit();
return "saveSucess";
} catch (Exception ex) {
ex.printStackTrace();
return "saveError";
} finally {
em.close();
}
}
Porém mesmo com o asSistemaModuloPar preenchido ele diz que eu estou tentando inserir nulo nos campos chave. Onde estou errando ?Como deve ser o persist ?
Obrigado