2015-04-01 58 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 */ 
    .... 
} 

乡村豆:

@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); 
    } 
} 

的DAO:

@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

你有什么问题?你能用英文解释吗? – 2015-04-01 11:32:06

+0

我的问题是当我尝试创建一个新用户。与该国家没有工作关系,并在apache中给我一个错误400。如果我删除关系和属性国家,它会正常工作。 – Hoddix 2015-04-01 11:52:06

+0

未能将java.lang.String类型的属性值转换为属性pais所需的类型com.lookautonomos.domain.Pais;嵌套异常是java.lang.IllegalStateException:无法将属性pais的类型[java.lang.String]的值转换为所需的类型[com.lookautonomos.domain.Pais]:未找到匹配的编辑器或转换策略 – Hoddix 2015-04-01 16:25:36

回答

0

我曾与这些相同的问题,您可以手动设置对象我希望它能解决你的问题。

试试这个!

usuario.setPais(paisService.getPaisById(request.getParameter("pais")));