我正在努力编写一个HQL查询,以便在表中插入新记录。我已经看到一些插入查询如下,但我不希望插入数据从另一个表如下代码。
String hql = "INSERT INTO Employee(firstName, lastName, salary)" +
"SELECT firstName, lastName, salary FROM old_employee";
Query query = session.createQuery(hql);
int result = query.executeUpdate();
System.out.println("Rows affected: " + result);
例如,我有一个表“用户”,有三个字段,如姓名,年龄,号码,我有这个用户表的实体。这将是什么插入查询?
4条答案
按热度按时间ryevplcw1#
在HQL中,只有INSERT INTO…支持SELECT...;没有INSERT INTO…HQL只支持从另一个表插入。
因此,从SELECT查询INSERT是可能的,如下所示
来自here secion 4
如果你有值和Entity,只需调用
exdqitrt2#
HQL
不支持这样的INSERT
,所以你必须通过创建和持久化新的实体来实现。你可以阅读here。
只有插入到…支持SELECT ...表单。不能指定要插入的显式值。
ycggw6v23#
您可以:
只要确保你添加了所有设置为“非空”的值,否则你会得到一个nullException。
xwbd5t1u4#
HQL仅支持INSERT INTO.........选择……;没有机会写INSERT INTO......... VALUES,我的意思是在写插入查询时,我们需要从其他表中选择值,我们不能手动插入我们自己的值。