¿Cómo puedo asignar un mapa en JPA sin utilizar las clases de Hibernate?JPA Map <String, String> mapping
Respuesta
¿No funciona lo siguiente para usted?
@ManyToMany(cascade = CascadeType.ALL)
Map<String,EntityType> entitytMap = new HashMap<String, EntityType>();
EntityType
podría ser cualquier tipo de entidad, incluyendo un String
.
Supongamos que tengo una entidad llamada libro que está teniendo 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",
[email protected](name="BOOK_ID"))
@MapKey ([email protected](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;
}
}
Funciona para mí.
+1. ¿Y si quiero recuperar solo el capítulo 3 de todos estos libros? Tengo una pregunta similar: http://stackoverflow.com/questions/12952625/jpa-category-language-relationship – ianaz
@ianaz 'seleccione c del Libro b join b.chapters c donde key (c) = '3'' –
Desafortunadamente, esto requiere anotaciones específicas de hibernación. La pregunta era por una solución sin. – RobertG
Aunque la respuesta dada por Subhendu Mahanta es correcta. Pero @CollectionOfElements
está en desuso. Se puede utilizar en lugar @ElementCollection
:
@ElementCollection
@JoinTable(name="ATTRIBUTE_VALUE_RANGE", [email protected](name="ID"))
@MapKeyColumn (name="RANGE_ID")
@Column(name="VALUE")
private Map<String, String> attributeValueRange = new HashMap<String, String>();
No hay necesidad de crear una clase de entidad separada para el campo Map
. Será hecho automáticamente.
Un ejemplo de trabajo:
@ElementCollection(fetch=FetchType.EAGER)
@CollectionTable(name = "TABLENAME")
@MapKeyColumn(name = "KEY")
@Column(name = "VALUE")
public Map<String, String> getMap() {
return _map;
}
para una relación muchos-a-muchos, también necesitaría 'joinColumns = @JoinColumn (name =" referencia_columna) 'dentro de @CollectionTable y' @MapKeyJoinColumn (name = "referencia_columna_otra_tabla)' – Blauhirn
Mi código es para un Mapa
- 1. Map <String, String> JSON en
- 2. Cómo convertir Map <String, String> a Map <Long, String> usando guava
- 3. Por qué java.util.Properties implementa Map <Object, Object> y no Map <String, String>
- 4. Mapping std :: map to Python
- 5. paso de un Map <String, String> a un método que requiere Map <String, Object>
- 6. ¿Están C++ std :: map <string, string> ordenados?
- 7. Store Map <Enum, Enum> como String
- 8. Lista <Map <String, Object >> to org.json.JSONObject?
- 9. No se puede convertir un HashMap <String, String> en una interfaz que extiende Map <String, String>
- 10. ServletRequest.getParameterMap() devuelve Map <String, String []> y ServletRequest.getParameter() devuelve String?
- 11. const std :: map <boost :: tuples :: tuple, std :: string>?
- 12. map <string, string> cómo insertar datos en este mapa?
- 13. Forma fácil de obtener una representación de cadena de Map <String, String []> en java?
- 14. Map to String en Java
- 15. Uso FlurryAgent.onEvent (String EVENTID, mapa <String, String> Parámetros)
- 16. WPF - ¿Ya se usa <?Mapping >?
- 17. ordenar una lista de Mapa <String, String>
- 18. Fluent Nhibernate mapping hasMany
- 19. IDictionary <string, string> versus Dictionary <string, string>
- 20. JAXB para unmarshall <string> foobar</string>
- 21. Diferencia entre <string> y <string.h>?
- 22. inicializar mapa <cadena, vector <string>>
- 23. StringDictionary vs Dictionary <string, string>
- 24. casting ArrayList <String> a String []
- 25. Poner en un mapa <String, ?>
- 26. ¿Cómo puedo mapear una colección anidada, Map <Key, List <Values>>, con hibernación de anotaciones JPA?
- 27. ¿Cómo codificaría un Map <String, Object> utilizando Protocol Buffers?
- 28. Haga nuestra propia lista <string, string, string>
- 29. ¿Por qué no puedo crear un diccionario <string, dictionary <string, string >>?
- 30. Cómo convertir Dictionary <string, object> a Dictionary <string, string> en C#
yo soy un poco confundido. La pregunta era sobre mapear un Map, pero la "mejor respuesta" es sobre un Map . ¿Extraño algo? –
whiskeysierra
EntityType podría ser cualquier tipo de entidad, incluida una cadena. –
¿Cuántas tablas genera esto? ¿Hay (1) uno para la clase original, (2) una tabla de unión (con claves para la clase original y el tipo de entidad) y (3) otra tabla para EntityType (en el escenario dado, una tabla con solo la combinación tecla de tabla y la cadena mapeada)? Esto puede ser una gran sobrecarga, dependiendo de las cadenas guardadas ... – RobertG