@OneToOne关于Spring mvc的关系

时间:2015-04-01 11:27:29

标签: java spring hibernate spring-mvc

我厌倦了尝试,但我没有任何结果。我的用户有一个国家,国家有很多用户。问题是当我创建一个新用户时。 我不知道问题出在哪里。

我有这个用户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

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,你可以通过id手动设置对象。我希望它能解决你的问题。

试试这个!

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