2011-01-31 6 views
4

Что лучший способ упорствовать следующую карту в классе:Упорство карта <Integer, Float> с JPA

@Entity 
    class MyClass { 


     @ManyToMany(cascade = CascadeType.ALL)  
     Map<Integer,Float> myMap = new HashMap<Integer, Float>(); 
    } 

Я попытался это, но результаты кода в:

Вызванная: org.hibernate.AnnotationException: Использование @OneToMany или @ManyToMany ориентация неподключенного класса: mypackage.myClass.myMap [java.lang.Float]

+0

Почему вы поставите '@ ManyToMany' аннотацию к вашей карте? Эта аннотация заключается в создании взаимосвязи между объектами (таблицы в БД говорят) – gabuzo

ответ

9

Вы не можете использовать @ManyToMany с Integerи, потому что эти типы являются типами значений, а не сущностями. Используйте @ElementCollection (начиная с Hibernate 3.5) или @CollectionOfElements (в предыдущих версиях).

@ElementCollection 
Map<Integer,Float> myMap = new HashMap<Integer, Float>(); 

Смотрите также:

+0

Прекрасно работает, я вижу, что он не импортирует org.hibernate, так что это часть JPA? – Roalt

+2

@Roalt: Да, '@ ElementCollection' является частью JPA 2.0. – axtavt

+0

Спасибо, а также JPA 2.0! – Roalt