2009-09-01 15 views
8

Al utilizar hibernación, ¿cómo puedo persistir una clase con un campo List<String>?Persistir los campos de recopilación con hibernación

Considérese la siguiente clase de entidad:

@Entity 
public class Blog { 
    private Long id; 
    private List<String> list; 

    @Id 
    @GeneratedValue 
    public Long getId() { return id; } 
    public void setId(Long id) { this.id = id; } 

    public List<String> getList() { return list; } 
    public void setList(List<String> list) { this.list = list; } 
} 

Sin embargo, cuando intento para guardarlo, me sale el siguiente error:

[INFO] An exception occured while executing the Java class. null 

Could not determine type for: java.util.List, at table: Blog, for columns: [org.hibernate.mapping.Column(list)] 

He intentado añadir '@CollectionOfElements' a getList(), pero luego solo el id se guarda en la biblioteca. No se crea una columna correspondiente para la lista.

Nota: Sólo estoy tratando de hibernación, por lo que podría utilizar vínculos de documentación que me ayudará a entender la gestión de relaciones con recogida en Hibernate

Respuesta

7

Eche un vistazo a This. Tal vez sea de ayuda.

¿Aplicó @CollectionOfElements de la siguiente manera?

@org.hibernate.annotations.CollectionOfElements(
targetElement = java.lang.String.class 

)

+0

¡Gracias! Se crea una nueva tabla para guardar el mapeo – notnoop

0

un vistazo a la Hibernate Annotations Documentation about Collections básicamente le tiene que decir a la lista en lo relación que representa.

@OneToMany(mappedBy="blog") 
public List<String> getList() { return list; } 

Entonces debería funcionar.

+0

Me gustaría obtener el siguiente error: '@OneToOne o @ManyToOne en uk.co.pookey.hibernate.model.Blog.list hace referencia a una entidad desconocida: java.util.List – notnoop

+0

Eso debería funcionar bien. ¿Importó la anotación Hibernate o JPA? – Daff

+0

Anotación JPA javax.persistence importada – notnoop

0

con un objeto Serializable parece funcionar mejor. Cambiar la propiedad list a ArrayList<String> parece resolver el problema.

Cuestiones relacionadas