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
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>();