Отображение JPA / Hibernate OneToMany с использованием составного PrimaryKey
В настоящее время я борюсь с правильными аннотациями сопоставления для сценария, использующего составной класс первичного ключа. Первое, чего я пытаюсь добиться словами:
У меня есть 2 класса: группа и FieldAccessRule. Группа может иметь много FieldAccessRules, в то время как FieldAccessRule назначена только ОДНА группа. Модификация это пока не проблема (упрощенно):
public class Group{
...
@OneToMany(mappedBy = "group")
private Set<FieldAccessRule> fieldAccessRules;
...
}
и для FieldAccessRule:
public class FieldAccessRule {
...
@ManyToOne
@JoinColumn(name = "group_id")
private Group group;
...
}
Теперь я решил использовать Composite PK для FieldAccessRule, потому что правило должно быть уникальным для ОДНОЙ группы и ОДНОГО поля. Это выглядит так:
@Embeddable
public class FieldAccessRulePK implements Serializable{
private String fieldKey;
private Group group;
...
}
И оф. FieldAccessRule необходимо изменить на
public class FieldAccessRule {
...
@EmbeddedId
private FieldAccessRulePK fieldAccessRulePK;
...
}
Как мне создать правильное сопоставление для FieldAccessRuleSet группы сейчас? Делая это так, я получаю:
В атрибуте 'fieldAccessRules' "сопоставленное" значению "группа" не может быть преобразовано в атрибут> на целевом объекте.
Какой правильный способ создания сопоставления из группы в ЧАСТЬ PrimaryKey?
Редактировать: я знаю, выяснил, что с помощью
public class Group{
...
@OneToMany(mappedBy = "fieldAccessRolePK.group")
private Set<FieldAccessRule> fieldAccessRules;
...
}
точно работает, как ожидалось. Он прекрасно компилируется, создает базу данных нормально, и после загрузки группы с предопределенными ролями они становятся доступными, как и ожидалось.
Тем не менее, Eclipse все еще говорит
В атрибуте 'fieldAccessRules' значение 'mapped by' 'fieldAccessRulePK.group' не может быть преобразовано в атрибут целевого объекта.
Я не уверен, хорошо ли игнорировать Error и "предполагать" все хорошо ... (Я нашел пост, в котором было сказано, что отображение шаблона attr1.attr2 поддерживается Hibernate, но не JPA-подтверждение. )