0

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

我这样做了:

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

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

4

2 回答 2

2

从数据库中获取用户,将其现有电子邮件与新值连接起来,然后保存用户。

JPA 使用实体并为您生成 SQL 查询。您通常只使用查询从数据库中获取实体。这些查询是 JPQL 查询,而不是 SQL 查询。

看起来您的架构未正确规范化。一个用户实体应该有许多电子邮件实体(OneToMany 关联),而不是将所有电子邮件塞入用户的单个 CLOB 字段中。这就是您可以从数据库中搜索和获取单个电子邮件的方式,如果您不需要它们,则可以在没有所有电子邮件的情况下获取用户。

于 2012-06-30T07:19:24.717 回答
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();
于 2012-06-30T07:16:32.340 回答