我有一个Mysql表,如下所示:
CREATE TABLE ABCD
(
TId BIGINT(8) PRIMARY KEY AUTO_INCREMENT,
TKey VARCHAR(200) NOT NULL,
TValue BIGINT(8) NOT NULL
);
它具有如下数据:
TId TKey TValue
1 abc 123
2 cde 345
3 def 546
我想做的是,如果我再次插入具有相同TKey的实体,它将更新现有记录,而不是插入新记录。
下面是我保存实体的代码:
ABCD abcd = new ABCD();
abcd.setKey(key);
abcd.setValue(value);
abcdService.create(abcd);
答案 0 :(得分:4)
Hibernate使用主键列值跟踪Java代码中的实体。因此,如果您使用键ABCD
和某个值创建一个新的cde
实体,则Hibernate会将其作为新实体,并且在保存时将在基础表中插入。>
如果您要修改其键为cde
的实体,则应首先获取该记录:
EntityManager em = getEntityManager();
ABCD movie = em.find(ABCD.class, 2);
movie.setValue(789);
以上假设您的框架已经为您处理了交易。