Problema ao criar objeto

[quote=MarcoAurelioBC]@andrielc

No seu primeiro post vc colocou

Acredito que esta acontecendo isso pela falta de referência à PK, o ideal seria se você tivesse populado a tabela com a lista inicial e sempre que fosse criar um novo projeto você referenciaria a essa PK e sempre terá sua lista padrão. Outra coisa que você pode fazer é configurar sua model já referenciando a esses dados pra não ter erro.

A sua base já tem muitos dados? não compensa mesmo remodelar?[/quote]

Creio que seja por esse caminho mesmo, repensei aqui e ligar projeto aos id’s de tarefa e às atividades, seja a solução.

Minha base não tem muitos dados poderia modificar o modelo sem problema, alguma sugestão ?
Muito obrigado.

[quote=fdiaz2011]@andrielc

Então é mais fácil ainda.
E revendo seu código…

Veja parte do seu código:

Set<Atividade> sac = mapAtividadeAdicionada.get(ta);  
ta.setAtividades(sac);

Ai vc disse: Problema se atualizo o objeto ele vai perder a lista inicial de atividades “padrão”

Mas isso é claro.
Qd vc faz ta.setAtividades(sac) vc está colocando nova lista no lugar da antiga.
Se vc quer adicionar atividades a lista antiga vc tem q fazer:

ta.getAtividades.addAll(sac);

Vc estará adicionando novas atividades à lista antiga e não colocando uma lista nova.[/quote]

Sim, uma boa usar isso quando se tem elementos novos e diferentes ao da lista atual, porém o problema é outro, é relacionado ao banco, creio que a solucao que voce disse anteriormente de ter uma tabela e ligar:
id_Projeto -> id_Tarefa -> id_Atividade, seja realmente a solucao.

Obrigado

Agora estou com dificuldade para mapear o relacionamento para criar uma tabela:

id_Projeto id_Tarefa id_Atividade

Alguém sabe como pode ser feito isso usando annotation do Hibernate ?

Obrigado.

Seguido aquela minha sugestão vc só precisa de um mapeamento @ManyToMany entre Tarefa e Atividade
E na Tarefa teria um id_projeto para indicar de qual projeto é aquela tarefa.

[quote=fdiaz2011]Seguido aquela minha sugestão vc só precisa de um mapeamento @ManyToMany entre Tarefa e Atividade
E na Tarefa teria um id_projeto para indicar de qual projeto é aquela tarefa.[/quote]

Olha so, se eu seguir essa sugestão, teremos problema, olha so

Retomando o exemplo acima do Carro e Motor

Criei Projeto A com a Tarefa Design do carro escolhendo APENAS a Atividade Design interior do carro

Ok, tarefa Design do carro.setIdProjeto( A.getId() )

Se eu for recuperar o meu Projeto A, ele vai recuperar a Tarefa Design do carro, porém ele ira listar todas as minhas atividades relacionado ao Design do carro.

[list]1 - Design interior do carro[/list]
[list]2 - Design banco do carro[/list]
[list]3 - Design do farol do carro [/list]

Ficou claro o problema se seguir o que voce sugeriu agora ?

Realmente eu devo adicionar id’s em uma tabela do projeto, porém, como criar as anotações para realizar isso, agora virou outro problema.

Veja o exemplo da tabela Orders Table:
http://www.solarisedesign.co.uk/multiple-tables-with-unique-ids-mysql-joins-and-normalization/

Seria exatamente assim que funcionaria.

Obrigado mais uma vez!

E se vc criar uma outra entidade que tenha relacionamento com as outras tabelas ?
Vc cria uma outra entidade e nela coloca os relacionamentos com mapeamentos necessários.

class AlgumNome() {

     private List<Projeto>  projetos;
     private List<Tarefa> tarefas;
     private List<Atividade> atividades;

}

[quote=fdiaz2011]E se vc criar uma outra entidade que tenha relacionamento com as outras tabelas ?
Vc cria uma outra entidade e nela coloca os relacionamentos com mapeamentos necessários.

[code]
class AlgumNome() {

 private List<Projeto>  projetos;
 private List<Tarefa> tarefas;
 private List<Atividade> atividades;

}
[/code][/quote]

Pois é rapaz, pensei nisso, porém não sei se é o melhor jeito; não sei se tem como fazer isso com anottations, tipo @Any (se é que entendi bem…):

http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html_single/#entity-hibspec-singleassoc topico 2.4.5.2

Vc vai precisar de um objeto q tenha o projeto, tarefa e atividade.
Então é melhor criar uma nova entidade como disse.
É claro q nessa entidade vc terá q colocar o mapeamento representando o tipo de relacionamento.
Ou seja, vai ter q colocar em cada atributo oq for preciso, tipo @ManyToMany ou outro q seja necessário

Obrigado pela ajuda, então farei dessa maneira.

[quote=fdiaz2011]Vc vai precisar de um objeto q tenha o projeto, tarefa e atividade.
Então é melhor criar uma nova entidade como disse.
É claro q nessa entidade vc terá q colocar o mapeamento representando o tipo de relacionamento.
Ou seja, vai ter q colocar em cada atributo oq for preciso, tipo @ManyToMany ou outro q seja necessário[/quote]

Isso me trouxe mais 3 tabelas

(Nova Entidade) - ProjetoCriado:

[code]@Entity
public class ProjetCreate {
@Id
@GeneratedValue
private Long id;

@OneToOne
private Projeto projeto = new Projeto();
@ManyToMany
private Set<Tarefa> tarefas = new HashSet<Tarefas>();
@ManyToMany
private Set<Atividades> atividades = new HashSet<Actividades>();

}
[/code]
Não seria a mesma coisa eu criar a relação em Projeto de:

    @ManyToMany
    private Set<Tarefa> tarefas = new HashSet<Tarefas>();
    @ManyToMany
    private Set<Atividades> atividades = new HashSet<Actividades>();

Essa jogada eu ganharia apenas 2 tabela.