Jdo + Embedded + "Foreign Key"

Olá pessoal, eu comecei a desenvolver uma aplicação pro GAE e estou trabalhando com JDO pela primeira vez.

Eu criei uma classe “profissão” e uma classe “usuario” (onde eu coloquei o atributo profissão marcado com a annotation “embedded”). As profissões são cadastradas em um crud separado e na hora de cadastrar o usuário ele seleciona a sua profissão.

Minha dúvida é a seguinte: meu mapeamento está permitindo remover uma profissão que está associada a um usuário. Eu preciso criar uma “foreign key” que não permitisse isso. Alguém pode me ajudar?

abraços

Bom como vc falou q vc faz um crud… pelo SGBD ele trata isso e não te deixa excluir algo que tenha referencia com outra tabela… desde que vc não setou sua foreign key como delete on cascade.

Olá anderson, tudo certo?

Assim, ele deixa eu excluir a profissão, mas ainda mantém uma “referência” em usuário, isto é, na displaytags de listar usuários ele ainda consegue exibir o nome da profissão que foi excluída (!!!). Mas se eu acessar a tela de editar usuário, a profissão não estará na lista de profissões e eu vou ter que selecionar outra…

Buenas!

Sei que este post é “antigo”, mas gostaria de saber como vc implementou a ação de deletar? estou implementando uma aplicação pro GAE mas não consigo deletar o registro persistido.


public void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws IOException {

        PersistenceManager pm = PMF.get().getPersistenceManager();

        String evento = req.getParameter("evento");

        String nome_cliente = req.getParameter("nome_cliente");
        
        String endereco_cliente = req.getParameter("endereco_cliente");

        Cadastro clientes = new Cadastro(nome_cliente, endereco_cliente, evento);

        if (evento == "Remover") {

            String query = "select from " + Cadastro.class.getName() + " where nomeCliente == " + nome_cliente;
            List<Cadastro> cadastro = (List<Cadastro>) pm.newQuery(query).execute();
        }

        try {
              pm.deletePersistent(clientes);

            } finally {
                pm.close();
            }
            resp.sendRedirect("/relatorio.jsp");
        }
    }

Poderia(m) me ajudar?