I made a test with primitive classes with unique id then it works normally and returns the generated id.
Follow the classes
@Entity
@Table(name = "SMSEnviado")
public class SMSEnviado implements Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
protected SMSEnviadoPK sMSEnviadoPK;
@Basic(optional = false)
@Column(name = "mensagem")
private String mensagem;
@Basic(optional = false)
@Column(name = "dataEnvio")
@Temporal(TemporalType.TIMESTAMP)
private Date dataEnvio;
// gets and sets()...
}
@Embeddable
public class SMSEnviadoPK implements Serializable {
@Basic(optional = false)
@Column(name = "idSMSEnviado")
private int idSMSEnviado;
@Basic(optional = false)
@Column(name = "semana")
private short semana;
@Basic(optional = false)
@Column(name = "ano")
private short ano;
@Basic(optional = false)
@Column(name = "codigoRevenda")
private String codigoRevenda;
// gets and sets()...
}
I use SMSEnviadoPK
like this:
SMSEnviadoPK smsEnvioPk = new SMSEnviadoPK();
smsEnvioPk.setAno((short)ano);
smsEnvioPk.setCodigoRevenda(revenda.getCodigorevenda());
smsEnvioPk.setSemana((short)semana);
SMSEnviado smsEnviado = new SMSEnviado(smsEnvioPk);
smsEnviado.setDataEnvio(new Date());
smsEnviado.setMensagem(sms.getMensagem());
smsEnviado = enviadoImpl.save(smsEnviado);