答案 0 :(得分:2)
Criteria API的文档仅描述了查询,因为Criteria API不是为DDL操作而创建的。实际上,我甚至会说整个JPA API并不是真的为此做的。
顺便说一下,另一个问题的代码没有显示DDL操作,它显示了JPA 2.0规范中描述的批量 DML 操作:
4.10批量更新和删除操作
批量更新和删除操作 适用于单个实体的实体 class(连同它的子类, 如果有的话)。只有一个实体抽象 模式类型可以在。中指定 FROM或UPDATE子句。
这些操作的语法如下 如下:
update_statement ::= update_clause [where_clause] update_clause ::= UPDATE entity_name [[AS] identification_variable] SET update_item {, update_item}* update_item ::= [identification_variable.]{state_field | single_valued_object_field} = new_value new_value ::= scalar_expression | simple_entity_expression | NULL delete_statement ::= delete_clause [where_clause] delete_clause ::= DELETE FROM entity_name [[AS] identification_variable]WHERE子句的语法是 在第4.5节中描述。
删除操作仅适用于 指定类的实体和 它的子类。它没有级联到 相关实体。
为。指定的
new_value
更新操作必须兼容 键入与其所在的字段 分配批量更新直接映射到 数据库更新操作,绕过 乐观的锁定检查。手提 应用程序必须手动更新 版本列的值,如果 期望的,和/或手动验证 版本列的值。
持久化上下文不是 与结果同步 批量更新或删除。
执行批量更新或删除操作时应该小心 因为它们可能会导致 数据库之间的不一致 和活动中的实体 持久化上下文。一般来说,批量 更新和删除操作应该 只能在交易中执行 在新的持久化上下文中或之前 获取或访问其实体 国家可能受此影响 操作
示例:
DELETE FROM Customer c WHERE c.status = ‘inactive’ DELETE FROM Customer c WHERE c.status = ‘inactive’ AND c.orders IS EMPTY UPDATE customer c SET c.status = ‘outstanding’ WHERE c.balance < 10000
答案 1 :(得分:0)