Como pode hibernar o acesso de um campo particular?
-
12-09-2019 - |
Pergunta
Como pode hibernar pode acessar um campo / método privado de uma classe java, por exemplo, para definir o @ ID?
Graças
Solução
Como Crippledsmurf diz, ele usa reflexão. Consulte Reflexão: quebrando todas as regras e Hibernate:. Preservação de um objeto Contrato
Outras dicas
Tente
import java.lang.reflect.Field;
class Test {
private final int value;
Test(int value) { this.value = value; }
public String toString() { return "" + value; }
}
public class Main {
public static void main(String... args) throws NoSuchFieldException, IllegalAccessException {
Test test = new Test(12345);
System.out.println("test= "+test);
Field value = Test.class.getDeclaredField("value");
value.setAccessible(true);
System.out.println("test.value= "+value.get(test));
value.set(test, 99999);
System.out.println("test= "+test);
System.out.println("test.value= "+value.get(test));
}
}
impressões
test= 12345
test.value= 12345
test= 99999
test.value= 99999
Em uma suposição eu diria que isso é feito com uma reflexão sobre o tipo de destino e definir os campos diretamente usando reflexão
Eu não sou um programador java, mas eu acredito que java tem suporte reflexão semelhante ao de .NET que eu faço uso
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow