我的问题是如何在sql中将值插入到DB中。我有一个可以收到多封电子邮件的用户。如何将多个电子邮件插入一个对象?我不想将一个全新的用户对象添加到新行中。我只想更新并将新电子邮件附加到db中现有用户的电子邮件字段中。
我这样做了:JPA.em().createQuery
("insert into User (email) select (email) from User where USERNAME=? VALUES (?)")
.setParameter(1, username).setParameter(2, email).executeUpdate();
但它不起作用,谢谢你的帮助!!
答案 0 :(得分:2)
从数据库中获取用户,将其现有电子邮件与新值连接,然后保存用户。
JPA使用实体并为您生成SQL查询。您只是使用查询来从数据库中获取实体。这些查询是JPQL查询,而不是SQL查询。
看起来你的架构没有正确规范化。一个用户实体应该具有许多电子邮件实体(OneToMany关联),而不是将所有电子邮件填充到用户的单个CLOB字段中。这是您可以从数据库中搜索和获取单个电子邮件的方式,如果您不需要,则可以在没有所有电子邮件的情况下让用户使用。
答案 1 :(得分:0)
我不知道JPA,但查询应该是
JPA.em().createQuery
("insert into User (email) select (email) from User where USERNAME=? VALUES (?)")
.setParameter(1, username).setParameter(2, email).executeUpdate();
应该是
JPA.em().createQuery("UPDATE User
SET email =?
WHERE USERNAME=? ")
.setParameter(1,email )
.setParameter(2,username)
.executeUpdate();