1

Tengo implementadas algunas clases con relaciones OneToMany y viceversa, en las que en todas me da el error en el mismo sitio, al guardar un nuevo objeto. Dos de mis clases son estas:

// 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;

En mi 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;
}

En ArticuloRepositoryImpl, que es el que llama ArticulosService

public void add(Articulo articulo) {
    getHibernateTemplate().save(articulo);

}

El error es: 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)

Esto me pasa con todas mis clases que tienen relaciones OneToMany, podeis ayudarme?

EDITADO: en otras clases y sus respectivos servicios, funciona, menos en estas en particular.Puede tener algo que ver la relacion entre las tablas?

adelagd
  • 23
  • 6
  • Ya se que me da un NPE, pero lo que no entiendo es por que. Cuando llamo a ese metodo, le paso un objeto con datos que recojo de un jsp, y al debugear, no es Null, por lo que no lo entiendo.. – adelagd Feb 26 '18 at 12:47
  • Si la línea que falla es `articulosService.add(articulo);` la única opción posible es que `articulosService` sea null – Pablo Lozano Feb 26 '18 at 12:51
  • Nada.. he vuelto a revisar todo, y no lo entiendo.. en unas clases y servicios me funciona y en otras no. – adelagd Feb 26 '18 at 13:29
  • Has depurado para ver que valores le pasas a los atributos de Articulo en la linea *articulosService.add(articulo);* ? – Lucas. D Feb 26 '18 at 13:42
  • Si.. los que he metido en el formulario, por eso preguntaba – adelagd Feb 26 '18 at 15:54
  • Creo que debe ser mas de configuracion, si todo lo demas esta bien entonces el metodo getHibernateTemplate() no te esta devolviendo nada. – Pedro Manuel Hernandez Feb 26 '18 at 23:21

0 Answers0