我们说我有一张桌子
1 |测试| 123个
2 |测试| 123个
3 | test1 | 456个
4 | test1 | 456个
5 | test2 | NULL
6 | test3 | NULL
我的问题是,我想保留" name"的值。对于具有相同值" ref_id"的行,该列是一致的柱。例如,在上面的数据中,如果有人试图更新具有sr_no = 1的行的名称来表示test123,那么同名应该开始反映在sr_no = 2的行中,因为两者具有相同的值ref_id,即123。 请注意,我不想通过在单独的表中取出name和ref_id来规范化表,因为ref_id也可以是NULL。所以,我想以某种方式使用hibernate来保持单个表来强制执行它。有没有办法做到这一点?
答案 0 :(得分:0)
这个问题不是Hibernate的工作,它是你的功能代码的工作。
如果您想要了解所描述的结果,请使用hibernate检索在where子句中传递REF_ID的实体集合。然后对功能代码中的所有实体进行相同的更新。
根据您提供的数据,如果REF_ID为NOT NULL,我假设您要忽略此规则。同样,您希望将其作为功能代码(不是休眠)的检查。
最后 - “因为ref_id也可以为NULL”不是不归一化的正当理由。数据模型可以很好地与NAME和REF_ID(可空)保存在一个表中,并且您的SR_NO具有外键。
E.g。
TEST_TABLE
ID | NAME | REF_ID
1 | test | 123
2 | test1 | 456
3 | test 2 | null
4 | test 3 | null
SR_TABLE
SR_NO | TEST_ID
1 | 1
2 | 1
3 | 2
4 | 2
5 | 3
6 | 6
希望这有帮助