Estou com o objeto e mando persistir, em segunda peço seu id e vem nulo e quando atualizo o objeto ele cria uma novo registro.
tenho uma table no banco que tem as chave para pegar o proximo sequence.
esta funcionado até ai bem.
O que esta faltando?
@Entity
@NamedQueries( {
@NamedQuery(name = "Pessoa.findAll", query = "select o from Pessoa o"),
@NamedQuery(name = "Pessoa.findName", query = "select o from Pessoa o where o.nome = :P_NOME")
} )
@Table(name = "pessoa" )
public class Pessoa implements Serializable {
@Id
@Column(nullable = false)
@TableGenerator( name="pessoa_id",
table="primary_keys",
pkColumnName="seq_name",
pkColumnValue="pessoa",
valueColumnName="seq_value")
@GeneratedValue(strategy = GenerationType.TABLE, generator = "pessoa_id")
private Integer id_pessoa;
@Column(nullable = false)
private String nome;
...
public static void main(String [] args) {
try {
Pessoa pessoa = new Pessoa();
pessoa.setNome("andre cunha");
final Context context = getInitialContext();
SessionEJB sessionEJB = (SessionEJB)context.lookup("SessionEJB");
sessionEJB.persistEntity( pessoa );
System.out.println( pessoa.getId_pessoa() );
pessoa.setNome("andre vieira");
sessionEJB.persistEntity( pessoa );
System.out.println( pessoa.getId_pessoa() );
System.out.println( sessionEJB.queryEnderecoFindAll( ) );
// sessionEJB.removeEndereco( endereco );
System.out.println( sessionEJB.queryPessoaFindName("andre cunha") );
System.out.println( ( (Pessoa) sessionEJB.queryPessoaFindName("andre cunha") .get(0) ).getId_pessoa() );
// sessionEJB.removePessoa( pessoa );
} catch (Exception ex) {
ex.printStackTrace();
}
}