Я настраиваю модели домена JPA с помощью Eclipselink.Я построил эти модели с несколькими классами @MappedSuperclass, прежде чем перейти к фактическому классу @Entity.Когда я выполняю запросы критериев, я получаю следующую ошибку:
org.springframework.dao.InvalidDataAccessApiUsageException: The attribute [null] is not present in the managed type [EntityTypeImpl@2123492724:DogEntity [ javaType: class com.fake.fake.entity.DogEntity descriptor: RelationalDescriptor(com.fake.fake.entity.DogEntity --> [DatabaseTable(Dog)]), mappings: 22]].;
@MappedSuperclass
public abstract class AbstractBaseEntity {
@Id
@Column(name = "id")
protected String id;
@Column(name = "lastUpdated")
@Temporal(TemporalType.TIMESTAMP)
protected Date lastUpdated;
}
@MappedSuperclass
public abstract class PetImpl extends AbstractBaseEntity implements Pet {
// I pretty much use this class to implement some of Pet
// and add some shared transient fields
@Transient
protected List<String> tags;
@Override
public List<String> getTags() {
return tags;
}
// I have some abstract methods in here also
public abstract int getMaxTags();
}
@Entity
public class DogEntity extends PetImpl {
@Column(name = "breed")
private String breed;
@Override
public int getMaxTags() {
return 1;
}
}
Full Stacktrace (извиняюсь, если сбиваю с толку, пытался отбросить специфичные для предприятия термины)
org.springframework.dao.InvalidDataAccessApiUsageException: The attribute [null] is not present in the managed type [EntityTypeImpl@909914828:DogEntity [ javaType: class com.fake.fake.entity.DogEntity descriptor: RelationalDescriptor(com.fake.fake.entity.DogEntity --> [DatabaseTable(Dog)]), mappings: 22]].; nested exception is java.lang.IllegalArgumentException: The attribute [null] is not present in the managed type [EntityTypeImpl@909914828:DogEntity [ javaType: class com.fake.fake.entity.DogEntity descriptor: RelationalDescriptor(com.fake.fake.entity.DogEntity --> [DatabaseTable(Dog)]), mappings: 22]].
at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:384) ~[spring-orm-4.2.4.RELEASE.jar:4.2.4.RELEASE]
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:418) ~[spring-orm-4.2.4.RELEASE.jar:4.2.4.RELEASE]
at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:59) ~[spring-tx-4.2.4.RELEASE.jar:4.2.4.RELEASE]
at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:213) ~[spring-tx-4.2.4.RELEASE.jar:4.2.4.RELEASE]
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:147) ~[spring-tx-4.2.4.RELEASE.jar:4.2.4.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-4.2.4.RELEASE.jar:4.2.4.RELEASE]
at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:133) ~[spring-data-jpa-1.11.3.RELEASE.jar:?]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-4.2.4.RELEASE.jar:4.2.4.RELEASE]
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92) ~[spring-aop-4.2.4.RELEASE.jar:4.2.4.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-4.2.4.RELEASE.jar:4.2.4.RELEASE]
at org.springframework.data.repository.core.support.SurroundingTransactionDetectorMethodInterceptor.invoke(SurroundingTransactionDetectorMethodInterceptor.java:57) ~[spring-data-commons-1.13.3.RELEASE.jar:?]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-4.2.4.RELEASE.jar:4.2.4.RELEASE]
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:208) ~[spring-aop-4.2.4.RELEASE.jar:4.2.4.RELEASE]
Iможно было бы ожидать, что наличие @MappedSuperclass на каждом из моих суперклассов было бы хорошо, но, похоже, есть некоторая проблема, которую я не могу на самом деле диагностировать, поскольку просто говорю, что у меня есть какой-то атрибут [null].