Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我的中间存储库接口在从SpringDataJPA1.4.x升级到更新版本(如1.7.1)后会出现问题? 在元模型中找不到键类[java.lang.Object]的[ManagedType]-请验证[Managed]类是否在persistence.xml中使用特定的java.lang.Object属性或全局false元素引用。 在org.eclipse.persistence.internal.jpa.metamodel.MetamodelImpl.EntityEmbeddebleManagedTypeNotFound(MetamodelImpl.java:173)~[org.eclipse.persistence.jpa-2.5.2.jar:na] 在org.eclipse.persistence.internal.jpa.metamodel.MetamodelImpl.managedType(MetamodelImpl.java:495)~[org.eclipse.persistence.jpa-2.5.2.jar:na]_Java_Spring_Jpa_Spring Data Jpa - Fatal编程技术网

为什么我的中间存储库接口在从SpringDataJPA1.4.x升级到更新版本(如1.7.1)后会出现问题? 在元模型中找不到键类[java.lang.Object]的[ManagedType]-请验证[Managed]类是否在persistence.xml中使用特定的java.lang.Object属性或全局false元素引用。 在org.eclipse.persistence.internal.jpa.metamodel.MetamodelImpl.EntityEmbeddebleManagedTypeNotFound(MetamodelImpl.java:173)~[org.eclipse.persistence.jpa-2.5.2.jar:na] 在org.eclipse.persistence.internal.jpa.metamodel.MetamodelImpl.managedType(MetamodelImpl.java:495)~[org.eclipse.persistence.jpa-2.5.2.jar:na]

为什么我的中间存储库接口在从SpringDataJPA1.4.x升级到更新版本(如1.7.1)后会出现问题? 在元模型中找不到键类[java.lang.Object]的[ManagedType]-请验证[Managed]类是否在persistence.xml中使用特定的java.lang.Object属性或全局false元素引用。 在org.eclipse.persistence.internal.jpa.metamodel.MetamodelImpl.EntityEmbeddebleManagedTypeNotFound(MetamodelImpl.java:173)~[org.eclipse.persistence.jpa-2.5.2.jar:na] 在org.eclipse.persistence.internal.jpa.metamodel.MetamodelImpl.managedType(MetamodelImpl.java:495)~[org.eclipse.persistence.jpa-2.5.2.jar:na],java,spring,jpa,spring-data-jpa,Java,Spring,Jpa,Spring Data Jpa,这很奇怪,因为恢复到Spring数据JPA1.4.3.RELEASE修复了这个问题。但我们想了解是什么导致了这种情况。我们正在使用的接口存储库如下所示 No [ManagedType] was found for the key class [java.lang.Object] in the Metamodel - please verify that the [Managed] class was referenced in persistence.xml using a specific &

这很奇怪,因为恢复到Spring数据JPA1.4.3.RELEASE修复了这个问题。但我们想了解是什么导致了这种情况。我们正在使用的接口存储库如下所示

No [ManagedType] was found for the key class [java.lang.Object] in the Metamodel - please verify that the [Managed] class was referenced in persistence.xml using a specific <class>java.lang.Object</class> property or a global <exclude-unlisted-classes>false</exclude-unlisted-classes> element.
       at org.eclipse.persistence.internal.jpa.metamodel.MetamodelImpl.entityEmbeddableManagedTypeNotFound(MetamodelImpl.java:173) ~[org.eclipse.persistence.jpa-2.5.2.jar:na]
       at org.eclipse.persistence.internal.jpa.metamodel.MetamodelImpl.managedType(MetamodelImpl.java:495) ~[org.eclipse.persistence.jpa-2.5.2.jar:na]
@存储库
公共接口库
这是一个假设,
QueryDSL谓词执行器{
}

@存储库
公共接口PersonRepository扩展了BaseRepository{}
在此期间,我们将使用旧版本,但我不确定在哪里查找以修复此问题。有什么想法吗?

tl;博士 如中所述,中间存储库接口需要使用
@NoRepositoryBean
进行注释。一般来说,Spring数据存储库不需要使用
@Repository
进行注释

细节 SpringDataJPA版本直到1.4.x都对存储库接口使用了延迟实例化模型。这意味着,如果没有人显式引用特定的存储库接口,则不会创建存储库bean,因此不会评估泛型类型

在SpringData1.5M1中,我们更改了它(更准确地说,SpringDataCommons1.7M1-请参阅,但这正是JPA1.5M1所依赖的),以与整个Spring容器中使用的默认bean实例化模型保持一致(默认情况下是急切实例化)


这意味着,以前错误的中间接口(如
BaseRepository
)现在开始使上下文引导失败,因为它们的泛型信息在启动时被评估。如上所述,建议的解决方法是在中间接口上使用
@NoRepositoryBean
,因为这将导致Spring数据忽略该接口,并且根本不会尝试为其创建Springbean。

是否将BaseRepository用作bean?如果没有,可以从中删除@Repository注释,或者替换为@NoRepositoryBean

您是否将BaseRepository用作bean?如果没有,可以从中删除存储库注释,或者替换为NoRepositoryBean@Nadir我们尝试删除存储库注释,但没有成功。我们将尝试
NoRepositoryBean
@nadir解决方案,如果您将其作为答案发布,我会将其标记为已接受。我将其放在答案中
@Repository
public interface BaseRepository<T, K extends Serializable>
  extends JpaRepository<T, K>,
  QueryDslPredicateExecutor<T> {
}
@Repository
public interface PersonRepository extends BaseRepository<Person, Long> { }