Internal Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityCons traintViolationException: Cannot add or update a child row: a foreign key constraint fails (`oferfast`.`oferta`, CONSTRAINT `fk_Oferta_Usuario` FOREIGN KEY (`usuario_id`) REFERENCES `usuario` (`usuario_id`) ON DELETE NO ACTION ON UPDATE NO ACTION)
Error Code: 1452
El JSON que envio es el siguiente:
Código:
El usuario con id 1 si existe en la base de datos, por cierto, los codigos de las clases los dejo acá abajo:{ "title": "title_1", "description": "description_1", "ubication_lon":10, "ubication_lat":20, "price":1000, "images_number":0, "visible_oferta":1, "usuario_id": 1 }
Clase Usuario:
Código:
Clase Oferta:@Entity @Table(name="usuario") @NamedQuery(name="Usuario.findAll", query="SELECT u FROM Usuario u") public class Usuario { private static final long serialVersionUID = 1L; @Id @Column(name="usuario_id", unique=true, nullable=false) private int usuarioId; @Column(name="username", nullable=false, length=45) private String username; @Column(name="password", nullable=false, length=45) private String password; @Column(name="email", nullable=false, length=45) private String email; @Column(name="type", nullable=false) private int type; @Column(name="reputation", nullable=false) private int reputation; @Column(name="permission", nullable=false) private int permission; @Column(name="url_profile_picture", nullable=false, length=255) private String url_profile_picture; @Column(name="url_profile_thumbnail", nullable=false, length=255) private String url_profile_thumbnail; @Column(name="visible_usuario", nullable=false) private int visibleUsuario; @OneToMany(mappedBy="usuario") private List<Oferta> ofertas; public Usuario() { } public int getUsuarioId() { return usuarioId; } public void setUsuarioId(int usuarioId) { this.usuarioId = usuarioId; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public int getType() { return type; } public void setType(int type) { this.type = type; } public int getReputation() { return reputation; } public void setReputation(int reputation) { this.reputation = reputation; } public int getPermission() { return permission; } public void setPermission(int permission) { this.permission = permission; } public String getUrl_profile_picture() { return url_profile_picture; } public void setUrl_profile_picture(String url_profile_picture) { this.url_profile_picture = url_profile_picture; } public String getUrl_profile_thumbnail() { return url_profile_thumbnail; } public void setUrl_profile_thumbnail(String url_profile_thumbnail) { this.url_profile_thumbnail = url_profile_thumbnail; } public int isVisibleUsuario() { return visibleUsuario; } public void setVisibleUsuario(int visibleUsuario) { this.visibleUsuario = visibleUsuario; } public void setOfertas(List<Oferta> ofertas) { this.ofertas = ofertas; } public List<Oferta> getOfertas() { return this.ofertas; } public Oferta addListaOfertas(Oferta laOferta) { getOfertas().add(laOferta); laOferta.setUsuario(this); return laOferta; } public Oferta removeOfertas(Oferta laOferta) { getOfertas().remove(laOferta); laOferta.setUsuario(null); return laOferta; } }
Código:
@Entity @Table(name="oferta") @NamedQuery(name="Oferta.findAll", query="SELECT o FROM Oferta o") public class Oferta implements Serializable { private static final long serialVersionUID = 1L; @Id @Column(name="oferta_id", unique=true, nullable=false) private int ofertaId; @Column(name="usuario_id", nullable=false) private int usuarioId; @Column(name="title", nullable=false, length=100) private String title; @Column(name="description", nullable=false, length=500) private String description; @Column(name="price", nullable=false) private int price; @Column(name="ubication_lon") private Double ubicacionLon; @Column(name="ubication_lat") private Double ubicacionLat; @Column(name="images_number", nullable=false) private int imagesNumber; @Column(name="date", nullable=false) private Timestamp date; @Column(name="visible_oferta", nullable=false) private boolean visibleOferta; @OneToMany(mappedBy="oferta") private List<OfertaHasEtiqueta> listaEtiquetas; @OneToMany(mappedBy="oferta") private List<ImagenOferta> listaImagenes; @ManyToOne @PrimaryKeyJoinColumn(name="usuario_id") private Usuario usuario; public Oferta() { } public int getOfertaId() { return ofertaId; } public void setOfertaId(int ofertaId) { this.ofertaId = ofertaId; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public int getPrice() { return price; } public void setPrice(int price) { this.price = price; } public Double getUbicacionLon() { return ubicacionLon; } public void setUbicacionLon(Double ubicacionLon) { this.ubicacionLon = ubicacionLon; } public Double getUbicacionLat() { return ubicacionLat; } public void setUbicacionLat(Double ubicacionLat) { this.ubicacionLat = ubicacionLat; } public int getImagesNumber() { return imagesNumber; } public void setImagesNumber(int imagesNumber) { this.imagesNumber = imagesNumber; } public Timestamp getDate() { return date; } public void setDate(Timestamp date) { this.date = date; } public int getUsuarioId() { return usuarioId; } public void setUsuarioId(int usuarioId) { this.usuarioId = usuarioId; } public boolean isVisibleOferta() { return visibleOferta; } public void setVisibleOferta(boolean visibleOferta) { this.visibleOferta = visibleOferta; } public List<ImagenOferta> getListaImagenes() { return this.listaImagenes; } public void setListaImagenes(List<ImagenOferta> listaImagenes) { this.listaImagenes = listaImagenes; } public ImagenOferta addListaImagenes(ImagenOferta laImagenOferta) { getListaImagenes().add(laImagenOferta); laImagenOferta.setOferta(this); return laImagenOferta; } public ImagenOferta removeListaImagenes(ImagenOferta laImagenOferta) { getListaImagenes().remove(laImagenOferta); laImagenOferta.setOferta(null); return laImagenOferta; } public Usuario getUsuario() { return usuario; } public void setUsuario(Usuario usuario) { this.usuario = usuario; } public List<OfertaHasEtiqueta> getListaEtiquetas() { return listaEtiquetas; } public void setListaEtiquetas(List<OfertaHasEtiqueta> listaEtiquetas) { this.listaEtiquetas = listaEtiquetas; } public OfertaHasEtiqueta addListaEtiquetas(OfertaHasEtiqueta laOfertaHasEtiqueta) { getListaEtiquetas().add(laOfertaHasEtiqueta); laOfertaHasEtiqueta.setOferta(this); return laOfertaHasEtiqueta; } public OfertaHasEtiqueta removeListaEtiquetas(OfertaHasEtiqueta laOfertaHasEtiqueta) { getListaEtiquetas().remove(laOfertaHasEtiqueta); laOfertaHasEtiqueta.setOferta(null); return laOfertaHasEtiqueta; } public List<Etiqueta> getListaSoloEtiquetas() { List<Etiqueta> listaAux = new ArrayList<Etiqueta>(); for(int i=0; i<getListaEtiquetas().size(); i++){ listaAux.add(getListaEtiquetas().get(i).getEtiqueta()); } return listaAux; } public static long getSerialversionuid() { return serialVersionUID; } }