I have implemented some classes with OneToMany relationships and vice versa, in which I get the error in the same site, when saving a new object. Two of my classes are these:
// imports
@Entity
@Table(name="articulo")
public class Articulo implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
@Column(name="idArticulo")
private Long idArticulo;
@Column(name="categoria")
private String categoria;
@Column(name="fecha_creacion")
private Date fecha_creacion;
@Column(name="fecha_modificacion")
private Date fecha_modificacion;
@Column(name="titulo")
private String titulo;
@Column(name="descripcion")
private String descripcion;
@Column(name="color")
private String color;
@Column(name="talla")
private String talla;
@Column(name="marca")
private String marca;
@Column(name="estadoVenta")
private String estadoVenta; //Valores: "En venta", "vendido"
@Column(name="estadoPrenda")
private String estadoPrenda;
@Column(name="precio_original")
private Float precio_original;
@Column(name="precio_venta")
private Float precio_venta;
@Column(name="precio_envio")
private Float precio_envio;
@Column(name="visto")
private Integer visto;
//Relacion muchos a uno
@ManyToOne
@JoinColumn(name="idUsuario")
private DatosUsuario datosUsuario;
@ManyToOne
@JoinColumn(name="idTransaccion")
private Transacciones transaccion;
//Relacion uno a muchos
@OneToMany
@JoinColumn(name="idImagen")
@IndexColumn(name="idx")
private List<Imagenes> imagenes;
//GETTERS Y SETTERS
/***************************************************************/
@Entity
@Table(name="usuario")
public class Usuario implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
@Column(name="idUsuario")
private Long idUsuario;
@Column(name="email")
private String email;
@Column(name="password")
private String password;
//Relacion uno a uno bidireccional
@OneToOne(cascade=CascadeType.ALL)
@PrimaryKeyJoinColumn
private DatosUsuario datosUsuario;
In my ArticulosAction
public String saveArticulo() throws Exception{
if(articulo.getIdArticulo()== null ) {
HttpSession session = ServletActionContext.getRequest().getSession(true);
Long id= ((Long) session.getAttribute("IdUsuario"));
datosUsuario = datosUsuarioService.load(id);
articulo.setDatosUsuario(datosUsuario);
articulosService.add(articulo); // Aqui da el error
}else {
articulosService.update(articulo);
}
return SUCCESS;
}
In ArticuloRepositoryImpl, that call ArticulosService:
public void add(Articulo articulo) {
getHibernateTemplate().save(articulo);
}
The error: Estado HTTP 500 -
type Informe de Excepción
mensaje
descripción El servidor encontró un error interno que hizo que no pudiera
rellenar este requerimiento.
excepción
java.lang.NullPointerException
com.cice.crud.web.ArticulosAction.saveArticulo(ArticulosAction.java:58)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62
)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:441)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:280)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:243)
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:165)
This happens to me with all my classes that have OneToMany relationships, can you help me?
** EDITED: ** I have debugged this, and "articulo" is not null, have the data inserted in my jsp page. In other classes and their respective services, it works, except in these in particular. Can the relationship between the tables have something to do?
** EDITED: ** In mi ApplicationContext I have this.. in other clasess words
<bean id="articuloService" class="com.cice.crud.service.ArticuloServiceImpl"/>
<bean id="articuloRepository" class="com.cice.crud.service.ArticuloRepositoryImpl"/>
I suppose articulosService
is null
here:
articulosService.add(articulo);