Da a entender que o erro acontece quando tu tenta persistir um dos objetos que compoe o VO não possui ID ou seja, não ainda não foi presistido no banco de dados.
Dependendo de como esta mapeado na entidade, tu precisara antes salvar o objeto filho para depois salvar o pai.
estou com um problema acho eu que similar. espero que possam me dar um help. uso EJB, JBOSS 4.1 e Struts 1
no meu caso eu tenho uma prova.listaQuestoes(), questao.listaResposta() … sendo assim, segue a sequencia que estou fazendo para cadastrar:
eu passo a minha prova para o meu ProvaFacadeBean.cadastrar();
cadastro a prova e itero a listaQuestao chamando QuestaoFacadeBean passando uma única questão;
cadastro a questão e itero a listaRespostas para cadastrá-las;
acho estranho que, se a primeira resposta bater na validação (lanço uma Exception) o fluxo segue retornando normalmente para minha Action para eu apresentar o problema ao usuário, porém, se for a “última” resposta ele me dá um erro de transação:
java.lang.RuntimeException: org.jboss.tm.JBossRollbackException: Unable to commit, tx=TransactionImpl:XidImpl[FormatId=257, GlobalId=xxxxxx/56, BranchQual=, localId=56] status=STATUS_NO_TRANSACTION; - nested throwable: (java.lang.IllegalStateException: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: br.entidade.Resposta.questao -> br.entidade.Questao)