1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Usar anotação @table do hibernate com variaveis

Galera estou precisando usar um banco que tem vários schemas e me conectar a todos atraves do mesmo sistema, estou usando o hibernate e essa configuração fica nas entidades na anotação @table. Para fazer isso preciso que o parametro schema receba uma variavel, assim dependendo do usuario que logar vou saber qual valor setar na variavel no momento de fazer qualquer transação no banco desde já agradeço quem puder dar alguma dica de como posso fazer isso. segue abaixo uma entidade:

@Entity
@Table(name = "bandeira", catalog = "sistema", schema = "Sistemas")
@XmlRootElement

public class Bandeira implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "bandeira", nullable = false)
    private Integer bandeira;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 30)
    @Column(name = "descricao", nullable = false, length = 30)
    private String descricao;

    public Bandeira() {
    }

    public Bandeira(Integer bandeira) {
        this.bandeira = bandeira;
    }

    public Bandeira(Integer bandeira, String descricao) {
        this.bandeira = bandeira;
        this.descricao = descricao;
    }

    public Integer getBandeira() {
        return bandeira;
    }

    public void setBandeira(Integer bandeira) {
        this.bandeira = bandeira;
    }

    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (bandeira != null ? bandeira.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Bandeira)) {
            return false;
        }
        Bandeira other = (Bandeira) object;
        if ((this.bandeira == null && other.bandeira != null) || (this.bandeira != null && !this.bandeira.equals(other.bandeira))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "entidades.Bandeira[ bandeira=" + bandeira + " ]";
    }

}
  • Olá Aislan, isso é alguma base de dados legada? pq se isso for sua estratégia de autenticação, aconselho rever sua estratégia.

    Adriano Patrick   23 de set de 2013
  • Cara a ideia é que vários usarios tenham acesso pelo mesmo sistema a um banco de dados sendo que cada um com um schema diferente. deu pra entender?

    Aislan Alves   23 de set de 2013
  • Olá Aislan, cara desculpa, não sei se estou lhe entendendo direito, mas pelo que entendi você quer implementar um controle de acesso na sua aplicação, se for isso, recomendo você estudar um pouco mais sobre o assunto, pois a forma que você está pensando em fazer não é a melhor opção, comece tentando entender o spring security que é um bom exemplo de controle de acesso de aplicações: http://docs.spring.io/spring-security/site/start-here.html espero ter ajudado.

    Adriano Patrick   23 de set de 2013
  • Vou dar uma olhada na sua dica. Explicando melhor: Estou trabalhando em um sistema de administração financeira queficará em um servidor único que terá vários clientes, obviamente as informações não podem se misturar, também não quero que as informações de todo mundo fique em um mesmo schema dentro do banco de dados, dai a ideia de criar um schema para cada cliente e ao logar no sistema preencher a variavel com o nome do schema dentro do banco que o cara teria acesso.

    Agradeço a atenção.

    Aislan Alves   23 de set de 2013
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags hibernate ou faça a sua própria pergunta.