2015-04-01 56 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")));