这是我的表GameAdmin
:
game_id company_id user_id
1 5 NULL
1 5 NULL
1 NULL 2
1 NULL 3
1 NULL 3
它将游戏链接到可以编辑它们的实体(公司或用户)。
我在所有列上都有UNIQUE
索引,但正如您所看到的那样,它没有按预期工作。
有什么问题?是因为NULL
s?
我知道我可以通过将结构更改为:
来使其工作game_id admin_type admin_id
1 company 5
1 company 5
1 user 2
1 user 3
1 user 3
但是这与我的JPA / Hibernate设置不兼容,或者至少非常不方便,因为它不允许我设置这样的关系:
@ManyToOne(optional=true)
private User user;
@ManyToOne(optional=true)
private Company company;
答案 0 :(得分:1)
哦,解决方案很简单。我将约束分开了,因此game_id
和company_id
以及game_id
和user_id
都有一个。
答案 1 :(得分:0)
这是因为NULL值。它们不被认为是独特的。如果这些字段上没有外键,则可以使用0而不是NULL。
答案 2 :(得分:0)
如果您知道(我的意思是知道,而不是猜测),您将永远不会有超过2个可能的类(用户/公司),只需使用否定ID其中之一。
但恕我直言,这是“薄红线”的可接受方面。