我只使用带有Annotations的hibernate。我的表看起来像这样:
@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的情况下“获取”对象的正确方法是什么?条件或查询是最佳方式吗?
答案 0 :(得分:0)
@UniqueConstraint
主要由数据库架构生成工具用于创建数据库架构。如果使用,它们将生成具有@UniqueConstraint
中提到的具有唯一约束的列的表。
@UniqueConstraint
在数据操作期间没有任何影响/用法。
如果您希望在network_id
和type
列上实现唯一约束行为并且您的架构已经创建,更新数据库架构以在{{1}上添加unique constraint
和network_id
列。如下所示:
type
希望这有帮助!