Não entendi o sentido disso , porem vc poderia ter uma variavel string e dar parse nela, nada impede vc escrever um float , int ,date , boolean como string. Mais ainda acharia isso uma POG , qual o sentido de uma classe com 1 ou varios atributos que se usam pro mesmo "contexto"
Se você persiste com hibernate, pode usar um usertype que persiste uma string contendo o valor e a informação sobre o tipo (se é string, data, etc)
Pode dar mais detalhes sobre o seu caso concreto? Cada solução faz mais sentido em um cenário
Pessoal, muito obrigado por responderem. Eu queria fazer isso porque existe uma variável genérica em um formulário que poderia receber vários tipos de respostas e com o conjunto de vários resultados elaborar uma análise das respostas dos usuários. POr isso seria importante a variável salvar no tipo correto.
E tem mesmo necessidade de armazenar no mesmo campo?
Provavelmente as analises que seu sistema fará nao devem ser identicas para todos os tipos, certo? A analise de respostas boolean não deve ser a mesma para data por exemplo.
Se você quiser utilizar o proprio sgbd para fazer algumas analises, por exemplo, contar quantas ocorrencias de cada resposta do tipo string, ou a média dos valores em respostas do tipo numerico, não irá conseguir.
Se ainda quiser gravar tudo no mesmo campo, como eu disse, dá pra usar um usertype
o domain ficaria mais ou menos assim:
class Resposta {
Object resposta
static mapping = { resposta type: RespostaUserType }
}
Sendo que RespostaUserType é uma classe que implementa UserType do hibernate.
O usertype pode codificar a resposta num json e persistir num campo varchar ou blob. Por exemplo, se for String iria virar algo assim:
{valor: "blabla", tipo: "java.lang.String"}
Pesquise se não é possível fazer algo com polimorfismo, tipo assim:
abstract class AbstractResposta<T> {
abstract T getResposta()
void setResposta(T resposta)
}
class RespostaString extends AbstractResposta<String> {
String respostaString
String getResposta { respostaString }
void setResposta(String resposta) { respostaString = resposta }
}
Agora, minha opinião já que vc detalhou um pouco mais seu projeto:
Eu tenho um sistema de pesquisas, no meu caso há um conjunto de domains que definem a pesquisa (quais são as questões e caracteristicas de cada uma), mas as resposta eu persisto tudo como string. Na hora das analises, olhando a definição da pesquisa o sistema sabe como tratar as respostas.
Magno, seu exemplo me ajudou demais. Obrigado pela explicação. Valeu mesmo.