Bir haritayı Hibernate sınıflarını kullanmadan JPA'da nasıl eşleyebilirim?JPA Haritası <String, String> eşleştirmesi
cevap
Aşağıdaki çalışma sizin için uygun değil mi?
@ManyToMany(cascade = CascadeType.ALL)
Map<String,EntityType> entitytMap = new HashMap<String, EntityType>();
EntityType
bir String
dahil olmak üzere herhangi varlık türü olabilir. Bana uyar
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;
}
}
: Varsayalım
Ben fasıl Haritası yaşıyor Kitap adında bir varlık var. Subhendu Mahanta tarafından verilen cevap doğru olmasına rağmen,
+1. Peki ya tüm bu kitapların sadece 3. bölümünü almak istersem? Benzer bir sorum var: http://stackoverflow.com/questions/12952625/jpa-category-language-relationship – ianaz
@ianaz 'c'den seç c b.chapters c anahtarını girin (c) = '3'' –
Maalesef, bu hazırda bekletme ek açıklamaları gerektirir. Soru, çözüm olmayan bir çözümdü. Çoktan çoğa bir ilişki için – RobertG
. Ancak @CollectionOfElements
kullanımdan kaldırılmıştır. Bunun yerine @ElementCollection
kullanabilirsiniz: Map
alan için ayrı varlık sınıfı oluşturmak için gerek yoktur
@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>();
. Otomatik olarak yapılacaktır.
Bir çalışma örneği:
@ElementCollection(fetch=FetchType.EAGER)
@CollectionTable(name = "TABLENAME")
@MapKeyColumn(name = "KEY")
@Column(name = "VALUE")
public Map<String, String> getMap() {
return _map;
}
, ayrıca @CollectionTable ve '@MapKeyJoinColumn (name =" referencing_column_other_table ")' – Blauhirn
Benim kodum birleşim için 'joinColumns = @JoinColumn (name =" referencing_column ")' gerekir.
- 1. form eşleştirmesi: Seçenek {..} <-
- 2. artış haritası <string, int> ++ kullanıcı aracını kullanarak
- 3. Bir Liste veya Küme için JPA eşlemesi <String>
- 4. Yabancı anahtar alanı null Hazırda beklemede @OneToOne eşleştirmesi Hazırda/JPA
- 5. ArrayList <HashMap <String, String >> String []
- 6. ICollection <string> string []
- 7. HashSet <String> String türüne dönüştürme []
- 8. String ArrayList <String> Casting []
- 9. Bir Tuple <string, string, Func <bool>>
- 10. Fluent NHibernate nesne eşleştirmesi ilişkisel eşleştirmesi
- 11. İsteğe bağlı <Map <String, String >> yerine boş bir Map <String, String>
- 12. Groovy haritası ve Java haritası Jenerik
- 13. Neden bir sözlük oluşturamıyorum <string, dictionary <string, string >>?
- 14. LinkedHashMap <string, LinkedHashMap <string, string >> nasıl görüntülenebilir
- 15. LINQ - Sözlük içine Listesini <string> çevirmek <string, string>
- 16. Swagger: haritası <dize, Nesne>
- 17. <Func <T, string>>
- 18. Haritaya <Eşleme <String, Dize>
- 19. JPA
- 20. SpringMVC servlet eşleştirmesi
- 21. Dizeler dizisini <string>
- 22. Set <String> Set []?
- 23. Sözlük <string, object>
- 24. dönüştürme Liste <String>
- 25. std :: list <std::string> listesi için, UTIG'de C++ 'da Java için <String> Listesinin nasıl bir örnek haritası oluşturursunuz?
- 26. JPA/Hazırda Bekletme Türü'nde String ile @Id nasıl kullanılır?
- 27. Harita Oluştur <String, String> from POJO
- 28. TypeScript Array - Array <string> ve string []
- 29. SWIG, Python'da bir harita <string, string> nasıl sarılır?
- 30. IDictionary küçük duyarlılığını nasıl geçersiz kılınır <string, string>
Biraz kafam karıştı. Soru, Haritasının haritalandırılmasıyla ilgiliydi, ancak "en iyi yanıt", Haritası ile ilgilidir. Bir şey mi özledim? –
whiskeysierra
EntityType, String de dahil olmak üzere herhangi bir varlık türü olabilir. –
Bu, kaç tane tablo oluşturur? Orjinal sınıf için bir (1), (2) bir birleşim tablosu (orijinal sınıf ve varlık türü için tuşlar) ve (3) EntityType için başka bir tablo var mı (verilen senaryoda, yalnızca birleşim içeren bir tablo) tablo anahtarı ve eşlenen dize)? Kaydedilen Dizeleri bağlı olarak bu çok fazla yük olabilir ... – RobertG