У меня есть экземпляр, где я пытаюсь отслеживать всех пользователей в категории, где пользователи могут переключаться. Например, предположим, что у меня есть простой класс Entity следующим образом.ElementCollections уникальный по id родителя, указанное значение
@Entity
public class Photo {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@ElementCollection(fetch=FetchType.LAZY)
List<User> flaggedUsers;
//Contains getters and setters
}
Один пользователь может помечать 2 фотографии и, следовательно, быть частью 2 списков. В идеале я хотел бы иметь уникальное ограничение на комбинацию основного идентификатора и пользователя. Как я могу это сделать?
Этот код не имеет уникального ограничения, когда второй пользователь отправляет флажок для изображения, потому что уникальный пользователь задает, а не комбинацию идентификатора пользователя/фотографии.
Я пытался использовать @CollectionsTable, как следует, но с ошибкой, как перечисленные
@Entity
public class Photo {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@ElementCollection(fetch=FetchType.LAZY)
@CollectionTable (name="photo_flagged_users", [email protected](name="flaggedUsers"),uniqueConstraints = @UniqueConstraint(columnNames={"photo.id","flaggedUsers"}))
List<User> flaggedUsers;
//Contains getters and setters
}
В Eclipse, в @UniqueConstrants красного цвета, со следующим текстом всплывающей подсказки:
Значение атрибута аннотации CollectionTable.uniqueConstraints должно быть некоторым @ javax.persistence.UniqueConstraint аннотация
Есть http://stackoverflow.com/questions/14673118/jpa-how-to-express-a-unique-constraint-including-an-elementcollection-column help? – Mark
Это близко, но @CollectionTables работает не так, как ожидалось, по крайней мере, есть кое-что, что мне не хватает. – PearsonArtPhoto