Hola, estoy haciendo un proyecto con Java EE (en un servidor glassfish), estoy utilizando POSTMAN para enviar los JSON y realizar las consultas (GET, POST, PUT), el problema es cuando quiero agregar a una tabla que tiene una Foreign_key, me aparece el siguiente error:
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:
{
"title": "title_1",
"description": "description_1",
"ubication_lon":10,
"ubication_lat":20,
"price":1000,
"images_number":0,
"visible_oferta":1,
"usuario_id": 1
}
El usuario con id 1 si existe en la base de datos, por cierto, los codigos de las clases los dejo acá abajo:
Clase Usuario:
Código:
@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;
}
}
Clase Oferta:
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;
}
}