SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Initial SessionFactory creation failed.org.hibernate.InvalidMappingException: Could not parse mapping document from resource comentario1nbi.hbm.xml
Exception in thread "main" java.lang.NullPointerException
at com.blog.dao.PostDAO.crearPost(PostDAO.java:48)
at com.hib.TestHibBlog.main(TestHibBlog.java:26)
Esto surgía, porque en comentario1nb1.hbm.xml había puesto como name el nombre de la tabla, y debe ser el del VO
<many-to-one name="postVO" column="idPost" />
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.blog.vo.Comentario1nBiVO" table="comentarios1nBi">
<id name="id" type="int" column="id" >
<generator class="identity"/>
</id>
<property name="cuerpo">
<column name="cuerpo" />
</property>
<property name="fecha">
<column name="fecha"/>
</property>
<!-- muchos comentarios pertenecen a un post
indico el nombre del atributo dentro
de Comentario1nBiVO al cual haré referencia
con mi clave.
La columna es la columna de posts, que es clave. -->
<many-to-one name="postVO" column="idPost" />
</class>
</hibernate-mapping>
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.blog.vo.Post1nBiVO" table="posts1nBi">
<id name="id" type="int" column="idPost" >
<generator class="identity"/>
</id>
<property name="idAutor" type="int" column="idAutor"/>
<property name="fecha">
<column name="fecha" />
</property>
<property name="titulo">
<column name="titulo" />
</property>
<property name="contenido">
<column name="contenido"/>
</property>
<list name="comentarios" cascade="all-delete-orphan">
<key column="idPost" /><!-- cuál columna de la tabla post será la clave externa -->
<index column="ORDEN" /> <!-- para guardar en el mismo orden, una columna nueva -->
<!-- ahora sí indico que hay una relación de 1 a n -->
<one-to-many class="com.blog.vo.Comentario1nBiVO" />
</list>
</class>
</hibernate-mapping>
package com.blog.vo;
import java.util.Date;
public class Comentario1nBiVO {
private int id;
private String fecha;
private Post1nBiVO postVO;
public Comentario1nBiVO() {
super();
// TODO Auto-generated constructor stub
}
public Comentario1nBiVO(String fecha, String cuerpo) {
super();
this.fecha = fecha;
this.cuerpo = cuerpo;
}
private String cuerpo;
/**
* @return the id
*/
public int getId() {
return id;
}
/**
* @param id the id to set
*/
private void setId(int id) {
this.id = id;
}
/**
* @return the fecha
*/
public String getFecha() {
return fecha;
}
/**
* @param fecha the fecha to set
*/
public void setFecha(String fecha) {
this.fecha = fecha;
}
/**
* @return the cuerpo
*/
public String getCuerpo() {
return cuerpo;
}
/**
* @param cuerpo the cuerpo to set
*/
public void setCuerpo(String cuerpo) {
this.cuerpo = cuerpo;
}
/**
* @return the postVO
*/
public Post1nBiVO getPostVO() {
return postVO;
}
/**
* @param postVO the postVO to set
*/
public void setPostVO(Post1nBiVO postVO) {
this.postVO = postVO;
}
}
package com.blog.vo;
import java.util.ArrayList;
import java.util.List;
public class Post1nBiVO {
private int id;
private int idAutor;
private String fecha;
private String titulo;
private String contenido;
private List
/**
* DEBE EXISTIR UN CONSTRUCTOR POR DEFECTO PARA QUE
* HIBERNATE FUNCIONE
*/
public Post1nBiVO(){
super();
}
public Post1nBiVO(int idAutor, String fecha, String titulo, String contenido) {
super();
this.idAutor = idAutor;
this.fecha = fecha;
this.titulo = titulo;
this.contenido = contenido;
}
public void addComentario(Comentario1nBiVO comentario){
comentarios.add(comentario);
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getFecha() {
return fecha;
}
public void setFecha(String string) {
this.fecha = string;
}
public String getTitulo() {
return titulo;
}
public void setTitulo(String titulo) {
this.titulo = titulo;
}
public String getContenido() {
return contenido;
}
public void setContenido(String contenido) {
this.contenido = contenido;
}
/**
* @return the idAutor
*/
public int getIdAutor() {
return idAutor;
}
/**
* @param idAutor the idAutor to set
*/
public void setIdAutor(int idAutor) {
this.idAutor = idAutor;
}
/**
* @return the comentarios
*/
public List
return comentarios;
}
/**
* @param comentarios the comentarios to set
*/
public void setComentarios(List
this.comentarios = comentarios;
}
}