我正在进行一个项目,在这个项目中,我们的JPA实体继承org.springframework.data.jpa.domain.AbstractPersistable,,如下所示:
@MappedSuperclass
public abstract class AbstractPersistable<PK extends Serializable> implements Persistable<PK> {
@Id @GeneratedValue private PK id;
...我们的域类定义如下:
public class User extends AbstractPersistable<Long> {
...
}最终,我们所有的主键都很长。但是,当我试图使用域对象启动流程实例时,我得到了以下错误:
org.activiti.engine.ActivitiException: Error while evaluating expression: ${reviewer}
...
Caused by: org.activiti.engine.ActivitiIllegalArgumentException: Unsupported Primary key type for JPA-Entity: java.io.Serializable
at org.activiti.engine.impl.variable.JPAEntityMappings.createId(JPAEntityMappings.java:168)
at org.activiti.engine.impl.variable.JPAEntityMappings.getJPAEntity(JPAEntityMappings.java:120)
...所以,如果域类继承自具有泛型主键的基类,或者我遗漏了什么东西,那么看起来像activiti-spring-boot-starter无法工作吗?
发布于 2016-12-13 19:12:36
查看源代码,惟一支持的ID类型是原语。代码中有一条注释:
<snip>
Class<?> type = metaData.getIdType();
// According to JPA-spec all primitive types (and wrappers) are supported, String, util.Date, sql.Date,
// BigDecimal and BigInteger
</snip>通过使用泛型,代码将通过无法正确匹配的可序列化代码。在JPAEntityMappings类中,这似乎是一个相对容易的重写。
https://stackoverflow.com/questions/40765287
复制相似问题