gpt4 book ai didi

java - 使用 Hibernate 和 mySQL 更新具有主键和唯一列的表

转载 作者:行者123 更新时间:2023-11-29 13:27:30 24 4
gpt4 key购买 nike

我有一个包含四列的表格:

CREATE TABLE `participants` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(128) NOT NULL,
`function` VARCHAR(255) NOT NULL,
`contact` VARCHAR(255) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `name_function_contact` (`name`, `function`, `contact`)
)

从应用程序中,我获得participants-对象,其中可能具有namefunctioncontact的值这些已经在数据库中的具体内容中了。在本例中,我希望 Hibernate 获取该对象的 id,否则我想保存该对象。

使用saveOrUpdate()我刚刚得到:

org.hibernate.exception.ConstraintViolationException: Duplicate entry 'NAME-FUNCTION-CONTACT: NAME' for key 'name_function_contact'

我怎样才能做到这一点?非常感谢!

最佳答案

由于答案表明 Hibernate 无法自行完成此操作(真糟糕!),我用“native sql”方式解决了它:

Participants tempParti = ((Participants) session.createQuery("FROM Participants WHERE name = '" + p.getName() + "' AND function = '" + p.getFunction() + "' AND contact = '" + p.getContact() + "'").uniqueResult());
if (tempParti != null) {
p = tempParti;
} else {
session.save(p);
}

就像魅力一样!谢谢大家!

关于java - 使用 Hibernate 和 mySQL 更新具有主键和唯一列的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19934356/

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