Hibernate / JPA: картамного ли это возможно? - PullRequest
1 голос
/ 06 января 2012

Более конкретно (map<Course, Role>)((User) u).courses

У меня много Course с и много User с, которые имеют Role с на курсах. Пользователь может быть сотрудником одного курса, а студент - другим.

У меня есть сущности пользователя с идентификатором ID и сущности курса с идентификатором, а также тип Role Enum

Мне нужна карта, принадлежащая пользователю, для запроса его роли в определенном классе:

public enum Role{ STUDENT, STAFF }


public class User ... {
...
@ElementCollection(targetClass=Role.class)
@CollectionTable(name="COURSE_ROLE")
@MapKeyJoinColumn(name="COURSE_ID")
@Column(name="ROLE_NAME")
@Enumerated(EnumType.STRING)
private Map<Course, Role> courses;
...

Я посмотрел несколько ресурсов. ProJPA имеет следующее:

@Entity
public class Department {
@Id private int id;
private String name;
// ...
@ElementCollection
@CollectionTable(name="EMP_SENIORITY")
@MapKeyJoinColumn(name="EMP_ID")
@Column(name="SENIORITY")
private Map<Employee, Integer> seniorities;
// ...

если мы считаем отдел моим пользователем, а сотрудника моим курсом, это почти работает, но я не знаю, как справиться с переходом от их Integer к моему Enum.

Пожалуйста, помогите мне с семантикой этого определения таблицы с аннотациями.

edit: Чтобы уточнить, я пытался без аргумента ElementCollection (Role.class) и многих других вариантов вариантов, но я не чувствую, что понимаю ситуацию. В настоящее время с этой комбинацией аннотаций я получаю исключение:

org.hibernate.MappingException: Could not determine type for: java.util.Map, at table: USER, 
for columns: [org.hibernate.mapping.Column(ROLE_NAME)]

1 Ответ

1 голос
/ 07 января 2012

Какие у меня были работы; Мне просто нужно обновить свою версию гибернации зависимостей maven.

...