Datanucleus警告: 在持久化单元中指定了类,但未进行注释,因此将忽略

8

启动我的应用程序时,我看到每个类都会出现以下警告:

WARN  [DataNucleus.MetaData] - Class com.mycomp.MyClass was specified in persistence-unit myPersistenceUnit but not annotated, so ignoring

应用程序能够正确启动,因此没有直接的问题,但我想知道这是从哪里来的,以及如何避免它。

我的 persistence.xml 如下:

<persistence-unit name="myPersistenceUnit">
    <provider>org.datanucleus.api.jpa.PersistenceProviderImpl</provider>
    <properties>
        <property name="datanucleus.ConnectionURL" value="appengine" />
        <property name="datanucleus.NontransactionalRead" value="true" />
        <property name="datanucleus.NontransactionalWrite" value="true" />
        <property name="datanucleus.appengine.datastoreEnableXGTransactions" value="true" />
        <property name="datanucleus.jpa.addClassTransformer" value="false" />
    </properties>
</persistence-unit>

我正在使用Spring在Google App Engine上运行我的应用程序。

但我找不到警告的来源。似乎有些东西在告诉我的应用程序检查所有类。

PS:我定义我的entityManagerFactory如下:

@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
    LocalContainerEntityManagerFactoryBean entityManagerFactory = new LocalContainerEntityManagerFactoryBean();
    entityManagerFactory.setPersistenceUnitName("myPersistenceUnit");
    entityManagerFactory.setPersistenceUnitPostProcessors(new ClasspathScanningPersistenceUnitPostProcessor("com.mycomp.domain"));
    return entityManagerFactory;
}

需要帮助,请多多关照。

1个回答

6

您的persistence.xml文件中没有包含任何<jar-file>或<class>标签,所以我猜测您的应用程序正在搜索所有可访问的类中的实体。也许您在同一个java包中混合了实体和非实体类。您没有提及包或类的详细信息。


实际上,用户没有在任何地方放置“exclude-unlisted-classes”,因此接受它去扫描他的CLASSPATH。 - DataNucleus
3
我在persistence.xml文件中添加了<exclude-unlisted-classes>true</exclude-unlisted-classes>,这导致警告消失了。实体类在Spring的LocalContainerEntityManagerFactoryBean创建过程中被扫描,就像问题中展示的那样。谢谢您的帮助! - Marcel Overdijk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接