gpt4 book ai didi

java - 不使用主键检查 uniq 约束

转载 作者:行者123 更新时间:2023-12-01 05:04:47 25 4
gpt4 key购买 nike

我仅将 hibernate 与注释一起使用。我的 table 看起来像这样:

@Entity
@Table(name = "NetworkType",
uniqueConstraints = {@UniqueConstraint(columnNames = {"network_id", "type"})})

public class NetworkType implements Serializable {

@Id
private long id;

@Column(name = "network_id", nullable = false)
private long networkId;

@Column(name = "type", nullable = false)
private String type;
...

目前,当我两次编写相同的 NetworkType 时,它​​会由于 UniqueConstraint 而引发异常(这是预期的)。

我的想法是在检查之前先阅读该项目。问题是,我的主键是 Id,我需要它,因为其他表引用了该表。

查询“network_id”和“type”项目以验证该组合尚不存在的最佳方法是什么?

我知道我可以通过手动查询来完成此操作,但是有没有更 Hibernate-y 的方法来做到这一点?

一般来说,在不使用 PK 的情况下“获取”对象的正确方法是什么?标准或查询是最好的方法吗?

最佳答案

@UniqueConstraint主要由数据库模式生成工具用来创建数据库模式。如果使用,它们将生成带有定义了唯一约束的@UniqueConstraint 中提到的列的表。

@UniqueConstraint 在数据操作期间没有任何影响/使用。

如果您希望在 network_idtype 列上实现唯一约束行为,并且您的架构已创建,请更新您的数据库架构以添加 network_idtype 列上的唯一约束如下:

   ALTER TABLE NetworkType
ADD CONSTRAINT uc_network_id_type UNIQUE (network_id, type)

希望这有帮助!

关于java - 不使用主键检查 uniq 约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12878619/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com