Код: Выделить всё
CREATE TABLE member_block (
member_id INT NOT NULL REFERENCES member(id),
block_id INT NOT NULL REFERENCES member(id),
CONSTRAINT different_ids CHECK (member_id != block_id),
PRIMARY KEY(member_id, block_id)
);
Я знаю, что можно сделать что-то вроде:
Код: Выделить всё
@Entity
public class MemberBlock {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
Long id;
@OneToOne
@JoinColumn(referencedColumnName = "ID")
Member blocker;
@OneToOne
@JoinColumn(referencedColumnName = "ID")
Member blocked;
}
Код: Выделить всё
@IdClass(MemberBlockId.class)
@Entity
public class MemberBlock {
@Id
@JoinColumn(referencedColumnName = "ID")
Member blocker;
@Id
@JoinColumn(referencedColumnName = "ID")
Member blocked;
}
record MemberBlockId(Member blocker, Member blocked);
Во всех трех подходах также отсутствует ограничение (поэтому участники не могут блокировать себя).>
Подробнее здесь: https://stackoverflow.com/questions/798 ... ble-in-jpa
Мобильная версия