Problema anotação hibernate

Galera boa tarde, estou tendo o seguinte erro:

java.lang.NoSuchMethodError: javax.persistence.JoinColumn.foreignKey()Ljavax/persistence/ForeignKey

Estou tentando usar a anotação :

@ManyToOne @JoinColumn(name="operador_id") private Operador operador;

Esse erro esta relacionado ao meu codigo ou algum problema de jar do hibernate? obrigado.

a principio,se o operador id estiver mapeado corretamente:

@Id @GeneratedValue
@Column(name="operador_id")
private Long id;

Não está nada errado…
parece ser algo relacionado com as dependências…

pois é acho que é errom de dependencia mesmo, mas ta dificil…ja troquei o hibernate e jpa pras versões mais recentes e nada…

https://github.com/pedropazello/gerenciador_de_departamentos/tree/master/gerenciador_de_departamento/WebContent/WEB-INF/lib
ai está as dependencias que usei em um projeto em hibernate + jpa com tabelas relacionadas,pega todos os jars do hibernate e tenta ai…
Só tenha cuidado porque tem jars do spring ai também…
Faz um clone do projeto e pega os jars :slight_smile:

blz deu certo, porem minha duvida, preciso pegar o “id” para salvar na tabela que relaciona o id de operador com o id de tarefa, chamada distribuicao:

na tabela de distribuicao eu faço assim:

[code]
@ManyToOne(cascade=CascadeType.ALL)
private Tarefa tarefa;

   @ManyToOne (cascade=CascadeType.ALL)
private Operador operador;[/code]

no xhtml de distribuicao esta assim:

<h:outputLabel value="Operador:" /> <h:selectOneMenu value="#{distribuicaoBean.distribuicao.operador}">// aqui o valor de operador preciso que seja o id para salvar no banco no campo operador_codigo <f:selectItems value="#{operadorBean.lista}" var="operador" itemLabel="#{operador.nome}" itemValue="#{operador.codigo}" /> </h:selectOneMenu>

 <h:selectOneMenu  value="#{distribuicaoBean.distribuicao.operador}">

A duvida é, o objeto operador esta mapeado certo? tenho uma coluna na tabela chamada operador_codigo, como vou atribuir o valor de operador.codigo para inserir nessa coluna.

Pra fazer o que você precisa, de uma olhada em converters do JSF, vai ficar mais claro o uso do selectOneMenu.

Dê uma olhada nesse tópico que vai esclarecer bem: http://www.guj.com.br/java/257236-jsf-20---como-pegar-objeto-inteiro-no-selectonemenu

blz vou dar uma lida, mas estou em duvida porque quando eu crio uma variavel na classe operador chamada operador_id por exemplo, no selectone eu atribuo o valor com:
distribuicaoBean.distribuicao.operador_id e funciona, porem quando uso o hibernate para mapear, o objeto operador fica sem valor e não consigo chamar o operador.codigo por exemplo.

so pra completar o raciocinio, a pagina do selectonemenu apontar o valor para a classe distribuicaoBean e usa a lista existente em operadorBean.lista.

bom o mapeamento esta correto. ocorre que, o objeto operador tem os metodos no bean:

        @ManyToOne
	@JoinColumn(name = "operador_id")
	private Operador operador;

public Operador getOperador() {
		return operador;
	}

	public void setOperador(Operador operador) {
		this.operador = operador;
	}

e nao consigo mesmo colocar o atributo codigo nesse objeto. Consigo fazer sem mapeamento tranquilo criando um objeto
Int operador_codigo, porem mapeando nem com reza.

1 curtida