2012-06-30 39 views
0

我的問題是如何在sql中將值插入到數據庫中。我有一個可以有多個電子郵件的用戶。我怎樣才能將多個電子郵件插入一個對象?我不想將全新的用戶對象添加到新行中。我只是想更新並追加新的電子郵件到數據庫中的現有用戶的電子郵件字段。SQL命令如何在數據庫中追加(插入)值

我這樣做:

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

,但它不工作,感謝幫助!

+0

這是怎麼回事?你可以設置兩個或多個ID的「電子郵件」? –

回答

2

從數據庫中獲取用戶,用新的值連接現有的電子郵件,並保存用戶。

JPA使用實體併爲您生成SQL查詢。您只能使用查詢來從數據庫中獲取實體。這些查詢是JPQL查詢,而不是SQL查詢。

而且它看起來像您的架構沒有正確標準化。一個用戶實體應具有許多電子郵件實體(OneToMany關聯),而不是將所有電子郵件填充到用戶的單個CLOB字段中。這就是你如何從數據庫中搜索和獲取單個電子郵件,並且如果你不需要它們,就可以讓用戶沒有他們所有的電子郵件。

+0

太棒了,你教會了我一件新事物。我會將它註釋爲OneToMany,但代碼concudyate看起來如何? ( – doniyor

+0

)如果您使用電子郵件實體和OneToMany關聯,則不再有任何串聯關係,用戶實體具有一系列電子郵件實體,存儲在各自的獨立數據庫表中。您創建一個新實例並保存,並添加它收集用戶的電子郵件,您真的需要閱讀關於JPA的書籍或教程,因爲在編碼之前您需要了解這些內容。 –

+0

我想,一個用戶對象有一個名爲'email'的varchar列,該列可以有多個值。 :( – doniyor

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(); 
+0

不,設置和刪除第一封電子郵件 – doniyor

+0

@ doniyor:是的,這將發生,這就是你正在尋找... –

+0

不,我正在尋找追加和未設置的方式。一個用戶應該可以有更多的電子郵件,但如果我設置,舊的電子郵件將被覆蓋,並在一天結束時,用戶只有一個電子郵件了.. – doniyor