2015-04-01 4 views
0

Я устал пробовать вещи, и у меня нет никаких результатов. У моего пользователя есть одна страна, и в стране много пользователей. Проблема в том, что я делаю нового пользователя. Я не знаю, где проблема.@OneToOne Отношения по весне mcv

У меня есть этот пользователь Bean:

@Entity 
@Table(name="usuarios") 
public class Usuario { 

    @Id 
    @GeneratedValue 
    @Column(name="id") 
    private Integer id; 

    @Column(name="nombre", nullable=false) 
    private String nombre; 

    @OneToOne 
    @JoinColumn(name = "id_pais") 
    private Pais pais; 

    /* Getters & Setters */ 
    .... 
} 

Страна Bean:

@Entity 
@Table(name="paises") 
public class Pais { 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    @Column(name="id") 
    private Integer id; 

    @Column(name="nombre") 
    private String nombre; 

    @OneToMany(mappedBy="pais") 
    private Set<Usuario> usuarios; 

    /* Getters & Setters */ 

} 

Контроллер:

@Controller 
@RequestMapping(value = "/usuario") 
public class UsuariosController { 

    @Autowired 
    private UsuarioService usuarioService; 

    @RequestMapping(method = RequestMethod.POST) 
    public RedirectView store(Usuario usuario) { 
     usuarioService.store(usuario);  
     return new RedirectView("../usuario"); 
    } 
    @ModelAttribute("usuario") 
    public Usuario getUsuario() { 
     return new Usuario(); 
    } 
} 

Служба:

@Service 
public class UsuarioServiceImplement implements UsuarioService{ 

    @Autowired 
    private UsuarioDAO usuarioDAO; 

    public void store(final Usuario usuario) { 
     usuarioDAO.store(usuario); 
    } 
} 

дао:

@Repository 
public class UsuarioHibernateDAO implements UsuarioDAO{ 

    @Autowired 
    private SessionFactory sessionFactory; 

    @Transactional(readOnly = false) 
    public void store(final Usuario usuario) { 
     sessionFactory.getCurrentSession().save(usuario); 
    } 
} 

Форма:

<form:form action="../usuario" method="POST" commandName="usuario"> 

    <!-- nombre --> 
    <form:input path="nombre" type="text" class="form-control" id="nombre" /> 

    <!-- pais --> 

    <form:select path="pais" class="form-control"> 
     <form:option value="1">España</form:option> 
    </form:select> 
    <input type="submit" class="btn btn-success" value="Enviar" /> 
</form:form> 

И я получаю это:

Estado HTTP 400 - 

type Informe de estado 

mensaje 

descripción El requerimiento enviado por el cliente era sintácticamente incorrecto. 

Apache Tomcat/8.0.20 
+0

В чем проблема? можете объяснить на английском? –

+0

Моя проблема в том, что я пытаюсь создать нового пользователя. Не работающие отношения со страной и дающие мне ошибку 400 в apache. Если я удалю отношения и страну атрибутов, она работает правильно. – Hoddix

+0

Не удалось преобразовать значение свойства типа java.lang.String в требуемый тип com.lookautonomos.domain.Pais for property pais; nested exception is java.lang.IllegalStateException: Невозможно преобразовать значение типа [java.lang.String] в требуемый тип [com.lookautonomos.domain.Pais] для свойства pais: не найдено подходящих редакторов или стратегии конверсии – Hoddix

ответ

0

У меня была такая же проблема с этим, вы можете установить объект вручную id.I надеюсь, что это решит вашу проблему.

Попробуйте это!

usuario.setPais(paisService.getPaisById(request.getParameter("pais"))); 
Смежные вопросы