unidirectional onetoone onetomany one mapsid many enumerated ejemplo java hibernate mapping persistence

java - onetomany - onetoone hibernate



Mapa JPA<String, String> mapeo (4)

¿No te funciona lo siguiente?

@ManyToMany(cascade = CascadeType.ALL) Map<String,EntityType> entitytMap = new HashMap<String, EntityType>();

EntityType podría ser cualquier tipo de entidad, incluida una String .

¿Cómo puedo asignar un mapa en JPA sin utilizar las clases de Hibernate?


Aunque la respuesta dada por Subhendu Mahanta es correcta. Pero @CollectionOfElements está en desuso. Puedes usar @ElementCollection en @ElementCollection lugar:

@ElementCollection @JoinTable(name="ATTRIBUTE_VALUE_RANGE", joinColumns=@JoinColumn(name="ID")) @MapKeyColumn (name="RANGE_ID") @Column(name="VALUE") private Map<String, String> attributeValueRange = new HashMap<String, String>();

No es necesario crear una clase de entidad separada para el campo Map . Se hará de forma automática.


Supongamos que tengo una entidad llamada Libro que tiene un Mapa de capítulos:

import java.io.Serializable; import java.util.Map; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import org.hibernate.annotations.CollectionOfElements; import org.hibernate.annotations.MapKey; @Entity public class Book implements Serializable{ @Column(name="BOOK_ID") @Id @GeneratedValue(strategy=GenerationType.AUTO) private Long bookId; @CollectionOfElements(targetElement=java.lang.String.class) @JoinTable(name="BOOK_CHAPTER", joinColumns=@JoinColumn(name="BOOK_ID")) @MapKey (columns=@Column(name="CHAPTER_KEY")) @Column(name="CHAPTER") private Map<String,String> chapters; public Long getBookId() { return bookId; } public void setBookId(Long bookId) { this.bookId = bookId; } public Map<String,String> getChapters() { return chapters; } public void setChapters(Map<String,String> chapters) { this.chapters = chapters; } }

Esto funciona para mi.


Un ejemplo de trabajo:

@ElementCollection(fetch=FetchType.EAGER) @CollectionTable(name = "TABLENAME") @MapKeyColumn(name = "KEY") @Column(name = "VALUE") public Map<String, String> getMap() { return _map; }