Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / устройство @UniqueConstraint / 5 сообщений из 5, страница 1 из 1
03.12.2016, 11:22
    #39359812
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
устройство @UniqueConstraint
Определяю @UniqueConstraint'ы. Однако без проблем добавляю записи с одинаковыми "topic_id" и "user_id".
Нужно ограничить запись одинаковых "topic_id" и "user_id" - я правильно понимаю, как устроен @UniqueConstraint?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
@Entity
@Table(name = "score_record", catalog = "mkyongdb", uniqueConstraints =  { 
		@UniqueConstraint(columnNames = {"date", "topic_id", "user_id" }) })
public class ScoreRecord {
	private Integer recordId;
	private Topic topic;
	private Integer userId;
	private Integer score;
	private Date date;
...
Рейтинг: 0 / 0
03.12.2016, 11:53
    #39359818
Alexey Tomin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
устройство @UniqueConstraint
rema174Определяю @UniqueConstraint'ы. Однако без проблем добавляю записи с одинаковыми "topic_id" и "user_id".
Нужно ограничить запись одинаковых "topic_id" и "user_id" - я правильно понимаю, как устроен @UniqueConstraint?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
@Entity
@Table(name = "score_record", catalog = "mkyongdb", uniqueConstraints =  { 
		@UniqueConstraint(columnNames = {"date", "topic_id", "user_id" }) })
public class ScoreRecord {
	private Integer recordId;
	private Topic topic;
	private Integer userId;
	private Integer score;
	private Date date;



Я вообще не понимаю, как оно устроено. Но читстопо синтаксису- ты создал один UniqueConstraint, требующий, чтобы набор значений 3х полей был уникален.
Если нужно ограничить запись одинаковых "topic_id" и "user_id", то, скорее всего, надо писать так:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
@Entity
@Table(name = "score_record", catalog = "mkyongdb", uniqueConstraints =  { 
		@UniqueConstraint(columnNames = {"user_id"}),
                @UniqueConstraint(columnNames = {"topic_id"}) })
public class ScoreRecord {
	private Integer recordId;
	private Topic topic;
	private Integer userId;
	private Integer score;
	private Date date;
...
Рейтинг: 0 / 0
03.12.2016, 11:59
    #39359820
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
устройство @UniqueConstraint
Alexey Tomin,

если по синтаксису, поперечислять их через запятую можно - встречал такие примеры

тепепрь что касается 3-х ограничений, то я убирал date - не получалось

ожидаемый результат случился, когда я в mysql добавил констрейнты на "topic_id" и "user_id",
но тогда зачем нужна аннотация @UniqueConstraint?
...
Рейтинг: 0 / 0
03.12.2016, 12:16
    #39359826
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
устройство @UniqueConstraint
может тут прикол в том, что topic - это связанный энтити и topic_id (неявно) передается из него?
...
Рейтинг: 0 / 0
03.12.2016, 23:00
    #39359945
Adva
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
устройство @UniqueConstraint
rema174,

Specifies that a unique constraint is to be included in the generated DDL for a primary or secondary table.

То есть добавляет ограничение в базу если JPA провайдер сам создает таблицы.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / устройство @UniqueConstraint / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]