2
respostas

Interface

Boa tarde, é possivel persistir uma classe com um atributo sendo interface?

public class Usuario implements UserDetails{

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name="id_usuario")
    private long id;

    @ManyToOne(fetch=FetchType.EAGER)
    private TipoDeUsuario tipoDeConta;
    public List<Role> getAuthorities() {
        return tipoDeConta.getAuthorities(this);
    }
public interface TipoDeUsuario {
    public List<Role> getAuthorities(Usuario usuario);
}

no caso quero armazenar uma interface chamada TipoDeUsuario, seria possivel armazenar a classe que está sendo instanciada no banco de dados, assim quando recuperar o usuario do banco de dados e usar o getAuthorities ele me retorna todas as Roles disponiveis naquele usuario pelo seu tipo?

2 respostas

Boa tarde Lucas,

Não te dou certeza que a JPA aceita ou não mapeamento de interface(ao meu ver não faria sentido) então vou postar a forma que eu faria e podemos discutir sobre!

Seguinte, um usuário tem um tipo e esse tipo tem suas roles correto? Logo temos 3 relações aqui...

Um Usuário tem um tipo...

class Usuario {
    ...
    @ManyToOne
    private TipoDeUsuario tipoDeUsuario;
}

TipoDeUsuario seria uma classe que conteria uma lista de Role

class TipoDeUsuario {
    ...
    @OneToMany
    List<Usuario> usuarios    

    @ManyToMany
    private List<Role> roles;
}

O que acha dessa solução?

Abraços

era mais pela didática mesmo, queria saber se é possível armazenar interfaces no banco de dados.