Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Erro ao subir aplicação(ManyToMany)

Estou tentando subir a aplicação, estou no ponto onde foram criadas as tabelas role e a intermediária usuario_role, e ao subir a aplicação as migrations são executadas porém o console retorna o erro

Caused by: org.hibernate.AnnotationException: Property 'br.com.alura.forum.model.Usuario.role' is a '@ManyToMany' and is directly annotated '@JoinColumn' (specify '@JoinColumn' inside '@JoinTable' or '@CollectionTable')

lembrando que as classes estão assim

@Entity
data class Usuario(
    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    val id: Long? = null,

    val nome: String,
    val email: String,
    val password: String,

    @JsonIgnore
    @ManyToMany(fetch = FetchType.EAGER)
    @JoinColumn(name = "usuario_role")
    val role: List<Role> = mutableListOf()
)

@Entity
data class Role(
    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    private val id: Long,
    private val nome: String
): GrantedAuthority {
    override fun getAuthority() = nome

}
2 respostas
solução!

Oi, Luciano.

Para as novas versões do Spring, você vai ter que fazer assim:

@JoinTable(
        name = "usuario_role",
        joinColumns = [JoinColumn(name = "usuario_id")],
        inverseJoinColumns = [JoinColumn(name = "role_id")]
    )
    var role: List<Role> = mutableListOf(),

Desta forma fica claro o vínculo das colunas.

Obrigado, Matheus. Funcionou.