首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Activiti JPA支持(activiti-spring-boot-starter jpa)无法检测通用主键类型

Activiti JPA支持(activiti-spring-boot-starter jpa)无法检测通用主键类型
EN

Stack Overflow用户
提问于 2016-11-23 13:01:59
回答 1查看 226关注 0票数 0

我正在进行一个项目,在这个项目中,我们的JPA实体继承org.springframework.data.jpa.domain.AbstractPersistable,,如下所示:

代码语言:javascript
复制
@MappedSuperclass
public abstract class AbstractPersistable<PK extends Serializable> implements Persistable<PK> {

    @Id @GeneratedValue private PK id;

    ...

我们的域类定义如下:

代码语言:javascript
复制
public class User extends AbstractPersistable<Long> {
    ...
}

最终,我们所有的主键都很长。但是,当我试图使用域对象启动流程实例时,我得到了以下错误:

代码语言:javascript
复制
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无法工作吗?

EN

回答 1

Stack Overflow用户

发布于 2016-12-13 19:12:36

查看源代码,惟一支持的ID类型是原语。代码中有一条注释:

代码语言:javascript
复制
<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类中,这似乎是一个相对容易的重写。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40765287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档