Problemas com update usando EJB3.0

0 respostas
Andre.flu

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();
        }
    }
Criado 5 de março de 2008
Respostas 0
Participantes 1