SQL命令如何将值附加(插入)到DB中

时间:2012-06-30 07:11:34

标签: java sql insert playframework-2.0

我的问题是如何在sql中将值插入到DB中。我有一个可以收到多封电子邮件的用户。如何将多个电子邮件插入一个对象?我不想将一个全新的用户对象添加到新行中。我只想更新并将新电子邮件附加到db中现有用户的电子邮件字段中。

我这样做了:

JPA.em().createQuery
        ("insert into User (email) select (email) from User where USERNAME=? VALUES (?)")
        .setParameter(1, username).setParameter(2, email).executeUpdate();

但它不起作用,谢谢你的帮助!!

2 个答案:

答案 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();