olá como eu faço pra persistir isso no hibernate ?
public hashmap<MeuObjeto,int> usos = new hashmap<MeuObjeto,int>();MeuObjeto e o objeto que tem esse atributo são uma entidade
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
olá como eu faço pra persistir isso no hibernate ?
public hashmap<MeuObjeto,int> usos = new hashmap<MeuObjeto,int>();MeuObjeto e o objeto que tem esse atributo são uma entidade
Você vai ter que mapear esse hash map, exemplo com @MapKeyJoinColumn:
@OneToMany(cascade = CascadeType.ALL)
@JoinTable(name = "order_item_mapping",
joinColumns = {@JoinColumn(name = "order_id", referencedColumnName = "id")},
inverseJoinColumns = {@JoinColumn(name = "item_id", referencedColumnName = "id")})
@MapKeyJoinColumn(name = "seller_id")
private Map<Seller, Item> sellerItemMap;ou usando @MapKey:
@OneToMany(cascade = CascadeType.ALL)
@JoinTable(name = "order_item_mapping",
joinColumns = {@JoinColumn(name = "order_id", referencedColumnName = "id")},
inverseJoinColumns = {@JoinColumn(name = "item_id", referencedColumnName = "id")})
@MapKey(name = "itemName")
private Map<String, Item> itemMap;
Deu exception:
Exception in thread "main" org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: teste_hibernate.KPlayer.cooldown[java.lang.Integer]
at org.hibernate.cfg.annotations.CollectionBinder.bindManyToManySecondPass(CollectionBinder.java:1332)
at org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:870)
at org.hibernate.cfg.annotations.MapBinder$1.secondPass(MapBinder.java:97)
at org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:53)
at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processSecondPasses(InFlightMetadataCollectorImpl.java:1693)
at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processSecondPasses(InFlightMetadataCollectorImpl.java:1661)
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:286)
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.build(MetadataBuildingProcess.java:83)
at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:473)
at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:84)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:689)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:724)
at teste_hibernate.main.getEntityManager(main.java:25)
at teste_hibernate.main.main(main.java:30)
esse é o hashmap
private HashMap<kit, Integer> cooldown = new HashMap<kit, Integer>();
Como você está usando um map com tipos primitivos (int), O JPA 2.0 suporta coleções primitivas por meio da anotação @ElementCollection que você pode usar em conjunto com o suporte de java.util.Map.
@ElementCollection
@MapKeyColumn(name="kit_name")
@Column(name="kit_value")
@CollectionTable(name="example_kits", joinColumns=@JoinColumn(name="example_id"))
private HashMap<Kit, Integer> cooldown = new HashMap<Kit, Integer>();