0

私の質問は、SQL で DB に値を挿入する方法です。複数のメールを送信できるユーザーがいます。複数の電子メールを 1 つのオブジェクトに挿入するにはどうすればよいですか? 完全に新しいユーザー オブジェクトを新しい行に追加したくありません。データベースの既存のユーザーのメールフィールドに新しいメールを更新して追加したいだけです。

これは私がしました:

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 クエリを生成します。通常、クエリはデータベースからエンティティを取得するためだけに使用します。そして、それらのクエリは SQL クエリではなく JPQL クエリです。

また、スキーマが正しく正規化されていないようです。ユーザーの単一の CLOB フィールドにすべての電子メールを詰め込むのではなく、1 つのユーザー エンティティに多数の電子メール エンティティ (OneToMany アソシエーション) を含める必要があります。これは、データベースから個々の電子メールを検索して取得し、必要がない場合はすべての電子メールなしでユーザーを取得する方法です。

于 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 に答える