2016-11-23 20 views
0

JPAエンティティが継承するプロジェクトに取り組んでいますorg.springframework.data.jpa.domain.AbstractPersistable 、これは以下のようになります。Activiti JPAサポート(activiti-spring-boot-starter-jpa)が汎用プライマリキータイプを検出できません

@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スプリング・ブート・スターター-JPAのように見えますドメインクラスは、汎用プライマリキーを持つ基本クラスから継承するか、何か不足していますか?

答えて

0

ソースを見ると、唯一サポートされている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クラスでの比較的簡単なオーバーライドと思われます。

関連する問題