[DÚVIDA] Como criar entitdades no relacionamento @OneToMany

Queria saber se está correto, eu quero criar essas tabelas no banco de dados usando hibernate tem algo errado? Pq tipo eu tentei usar mappedBy dentro da anotação @OneToMany mas na hora de gerar o esquema no banco eu recebo uma exceção, então eu resolvi usar o joinTable, assim está correto?

@Entity
public class Conhecimento {

  @Id
  @GeneratedValue
  @Column(name="cd_codigo_conhecimento")
  private Integer id;
  
  @Column(nullable=false)
  private String name;

  //Gets e Sets omitidos

}

@Entity
public class Pessoa{

  @Id
  @GeneratedValue
  @Column(name="cd_codigo_pessoa")
  private Integer id;

  private String name;

  @OneToMany
  @JoinTable(
         name="lista_conhecimentos",
         joinColumns = { @JoinColumn=(name="cd_codigo_conhecimento")},
         inverseJoinColumns = {@JoinColumn=(name="cd_codigo_pessoa")}
  )
  private List<Conhecimento> conhecimentos;

 //Gets e sets omitidos

}

Coloque seus códigos entre as tags code que fica mais fácil de ler.

[code]
@Entity
public class Conhecimento {

@Id 
@GeneratedValue 
@Column(name="cd_codigo_conhecimento") 
private Integer id; 

@Column(nullable=false) 
private String name; 

//Gets e Sets omitidos

}[/code]

[code]@Entity
public class Pessoa {

@Id 
@GeneratedValue 
@Column(name="cd_codigo_pessoa") 
private Integer id; 

private String name; 

@OneToMany 
@JoinTable( 
    name="lista_conhecimentos", 
    joinColumns = { @JoinColumn=(name="cd_codigo_conhecimento")}, 
    inverseJoinColumns = {@JoinColumn=(name="cd_codigo_pessoa")} 
) 
private List<Conhecimento> conhecimentos; 

//Gets e sets omitidos

}[/code]

Geralmente, quando se usar OneToMany se usa também algum tipo de Cascade. Não sei te dizer se é necessário, mas é muito normal de se ver.

Quando eu uso joinColumns, não uso desse tipo que você usa. Pode ser erro aí. Eu usaria assim:

@OneToMany(cascade = CascadeType.ALL) @JoinTable( name = "pessoa_conhecimento", joinColumns = @JoinColumn(name = "Pessoa_ID"), inverseJoinColumns = @JoinColumn(name = "Conhecimento_ID")) private List<Conhecimento> listaDeConhecimentos;
Pensando de outra forma, acho que você usa “{” e “}” quando existe mais de uma coluna. De qualquer forma, tenta mudar as coisas que falei e posta o resultado. Se ainda não foi resolvido, coloca o nome da Exception que aparece.

[Editado]
O nome da tabela usada no join não é pessoa conhecimento, mas sim pessoa_conhecimento (com underline).