Tenho uma entidade chamada Documento. Entre os atributos que ela recebe tenho o TipoDocumento (Entidade 1) e Funcionario (Entidade 2). Não estou conseguindo realizar o mapeamento do Funcionario.
O erro mostrado é o seguinte:
org.hibernate.AnnotationException: Illegal attempt to map a non collection as a @OneToMany, @ManyToMany or @CollectionOfElements: br.gov.seinf.entity.Documento
OBS: O mapeamento do TipoDocumento é @ManyToOne. Já pro Funcionario eu já testei @ManyToOne, @OneToMany e @ManyToMany.
jakefrog o relacionamento @OneToOne tbm não funciona. Estarei postando o código daqui a pouco.
M
Macksuel
packagebr.gov.seinf.entity;importjava.io.Serializable;importjava.util.Calendar;importjavax.persistence.Column;importjavax.persistence.Entity;importjavax.persistence.GeneratedValue;importjavax.persistence.GenerationType;importjavax.persistence.Id;importjavax.persistence.JoinColumn;importjavax.persistence.ManyToOne;importjavax.persistence.OneToOne;importjavax.persistence.Temporal;importjavax.persistence.TemporalType;@EntitypublicclassDocumentoimplementsSerializable{privatestaticfinallongserialVersionUID=1L;@Id@GeneratedValue(strategy=GenerationType.IDENTITY)@Column(name="doc_id")privateLongid;@Column(name="doc_numero")privateStringnumero;@Column(name="doc_assunto")privateStringassunto;@Temporal(TemporalType.DATE)@Column(name="doc_data")privateCalendardata=Calendar.getInstance();@Column(name="doc_descricao")privateStringdescricao;/*JÁ TENTEI VÁRIOS TIPOS DE RELACIONAMENTOS AQUI E NENHUM FUNCIONOU. E AGORA?*/@Column(name="fk_funcionario")privateFuncionariofuncionario;@ManyToOne@JoinColumn(name="fk_tipo")privateTipoDocumentotipo;/** Getters And Setters **/publicLonggetId(){returnid;}publicvoidsetId(Longid){this.id=id;}publicStringgetNumero(){returnnumero;}publicvoidsetNumero(Stringnumero){this.numero=numero;}publicStringgetAssunto(){returnassunto;}publicvoidsetAssunto(Stringassunto){this.assunto=assunto;}publicCalendargetData(){returndata;}publicvoidsetData(Calendardata){this.data=data;}publicStringgetDescricao(){returndescricao;}publicvoidsetDescricao(Stringdescricao){this.descricao=descricao;}publicTipoDocumentogetTipo(){returntipo;}publicvoidsetTipo(TipoDocumentotipo){this.tipo=tipo;}publicFuncionariogetFuncionario(){returnfuncionario;}publicvoidsetFuncionario(Funcionariofuncionario){this.funcionario=funcionario;}}
Hebert_Coelho
Retira o @Column e deixa o @OneToOne
M
Macksuel
Apareceu esse erro:
org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: br.gov.seinf.entity.Documento.funcionario -> br.gov.seinf.entity.Funcionario
Hebert_Coelho
Coloca no cascade da anotação PERSIST, MERGE na anotação.