我在閱讀Hibernate HQL教程,發現HQL不支持INSERT INTO..VALUES..
,但支持INSERT INTO..SELECT..
,即HQL只支持從其他表插入數據。在Hibernate中使用HQL在一張表中插入數據
假設我想在一個表中插入相同的值,並且該數據不是來自任何其他表,即該值不在任何其他表中。那麼如何在HQL中做到這一點?
另外,想知道HQL中這種限制的理由嗎?
我在閱讀Hibernate HQL教程,發現HQL不支持INSERT INTO..VALUES..
,但支持INSERT INTO..SELECT..
,即HQL只支持從其他表插入數據。在Hibernate中使用HQL在一張表中插入數據
假設我想在一個表中插入相同的值,並且該數據不是來自任何其他表,即該值不在任何其他表中。那麼如何在HQL中做到這一點?
另外,想知道HQL中這種限制的理由嗎?
如果數據來自另一個表,則不需要使用hql來插入。
只需獲取對您的實體的引用,獲取Hibernate會話,並調用save()。
根據http://docs.jboss.org/hibernate/orm/4.0/devguide/en-US/html/ch04.html#d0e2116
僞語法INSERT語句
INSERT INTO實體名稱properties_list和select_statement中
只有INSERT INTO ... SELECT ...形式支持的。您不能指定顯式值來插入。
Hibernate是一個ORM框架(對象關係映射)。
它的工作是你給它的對象(實體),他管理存儲(通過Session.save()
,IIRC)。
因此,您不使用HQL來插入新記錄,而是使用ORM方法。另一方面,這是一個猜測),因爲從表中加載實體,將它們複製到其他實體並逐一存儲它們,HQL提供了一個捷徑,用於DB中的SQL用於性能目的的具體操作。
您可以使用session.save(object)
將數據插入表中。
不明白誰低估了這個問題?不管誰,請讓我知道原因,這樣我可以在將來照顧 – Anand
我不downvoter,但我認爲你應該讀這個:http://stackoverflow.com/faq#dontask – user1516873