错误是: 错误:org.hibernate.QueryException:只能使用序列或插入后样式生成器生成 ID 作为批量插入的一部分
总部:
insert into CategoryProduct (category, product)
select c, p from Category c, Product p
where c.id = 252 and p.id = 554
categoryProduct 是一个嵌入了 Id 的实体:
@EmbeddedId
protected CategoryProductPK categoryProductPK;
提前致谢!
最佳答案
异常似乎是从org.hibernate.hql.ast.HqlSqlWalker
抛出的在:
IdentifierGenerator generator = persister.getIdentifierGenerator();
if ( !supportsIdGenWithBulkInsertion( generator ) ) {
throw new QueryException( "can only generate ids as part of bulk insert with either sequence or post-insert style generators" );
}
决定是在
public static boolean supportsIdGenWithBulkInsertion(IdentifierGenerator generator) {
return SequenceGenerator.class.isAssignableFrom( generator.getClass() )
|| PostInsertIdentifierGenerator.class.isAssignableFrom( generator.getClass() );
}
因此,Hibernate 似乎希望您使用的生成器是 SequenceGenerator
或 PostInsertIdentifierGenerator
的子类型。你用的是什么发电机?
关于java - 为什么这个 HQL 无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6220594/