IllegalArgumentException ao integrar wicket+spring+hibernate+jpa

0 respostas
A

Olá
Estou tentando criar um projeto para testar a integração do wicket+spring+hibernate+jpa usando annotations, onde eu tento inicializar a entidade relativa ao formulário no wicket via anotação @SpringBean. Fiz esta opção para deixar a implementação da entidade oculta, tornando publica apenas sua interface.

O arquivo VehiclePage:
public class VehiclePage extends WebPage{

	private Form<Vehicle> form;
	
	@SpringBean
	private Vehicle vehicle;
	
	@SpringBean
	private VehicleService vehicleService;
	
	public VehiclePage() {
		
	    FeedbackPanel feeedback = new FeedbackPanel("feeedback");
        add(feeedback);

        form = new Form("vehicleForm");
        form.setModel(new CompoundPropertyModel(vehicle));
        form.add(new TextField("placa"));
        form.add(new Button("saveButton") {
            @Override
            public void onSubmit() {
                vehicleService.persist(vehicle);
            }
        });
        add(form);
	}
	
}
Acontece que quando eu tento persistir a entidade no banco é lançada a exceção:
java.lang.IllegalArgumentException: Unknown entity: org.apache.wicket.proxy.$Proxy21
     at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:223)
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     at java.lang.reflect.Method.invoke(Method.java:597)

Debugando o código, eu percebi que em tempo de execução o objeto recebido pelo método persist é um org.apache.wicket.proxy.LazyInitProxyFactory$JdkHandler@802ed1, com uma propriedade target apontando para a endidade que estou querendo persistir (VehicleImpl, com todos os campos preenchidos corretamente). Já testei instanciando manualmente a entidade no arquivo VehiclePage e tudo funcionou corretamente.

Essa abordagem de inicializar a entidade usando @SpringBean está correta, ou é melhor implementar um método VehicleService.createVehicle() para retornar uma instância da minha entidade?

Criado 6 de janeiro de 2010
Respostas 0
Participantes 1