Mudar nome do mapeamento dinamicamente

2 respostas
prog.tiago

Boa tarde,

Amigos, alguém sabe se é possível alterar o nome de um mapeamento de tabela dinamicamente?

Vejam o seguinte:

@Entity
@Table(name="janeiro_2011_janeiro_2011_calculofuncionarios")
public class CalculoFuncionario {

Eh bizarro, mas foi assim que fizeram o banco :shock:

Tem momentos que eu gostaria que esse mapeamento assumisse o valor: fevereiro_2011_fevereiro_2011_calculofuncionarios

Alguém sabe como consigo fazer isso?
Através de reflections dá?

Abraços

2 Respostas

Hebert_Coelho

Nunca ouvi falar que isso é possível.

Seria melhor você criar uma classe para cada Mes que estendesse o CaluloFuncionario.

E por consulta no banco de dados você retornaria qual a classe que é correto.

Realmente não consigo ver outra solução.

Vamos ver se alguém saiba algo melhor. ^^

A

Alguns bancos de dados fornecem o particionamento automático de tabelas.
Assim você poderia definir um campo ( ano_mes no caso) e com um nome só, a tabela seria particionada automaticamente.

Não é recomendável ter várias tabelas para a mesma informação de acordo com o período.
Portanto recomendo mudar isso, se for possível

Bem, se em sua realidade isso não for possível, tenho uma idéia que talvez funcione.
É possível definir no jpa (ou apenas no hibernate, não lembro) uma estratégia para nomeação das tabelas e campos.

Você cria uma classe que implementa uma interface X, e registra ela como sua estratégia de nomes.

Com isso você poderia retornar um nome diferente para tabela de acordo com a data.
É apenas uma idéia, não testei, mas acredito que possa funcionar.

E sim, isto é uma tremenda gambiarra! Só utilize em último caso.

Criado 8 de outubro de 2012
Ultima resposta 9 de out. de 2012
Respostas 2
Participantes 3