- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们正在使用 Spring、Hibernate/JPA 和 Maven 开发一个 Web 应用程序。我们有几个定义不同实体的模块,所有模块都基于定义数据访问的核心模块和部署为 tomcat 上的 war 的 Web View 项目。
现在我在 persistence.xml 放置方面遇到了一些麻烦。实际上我根本不想使用它,因为我正在所有 java/test/resources 文件夹以及实际的 web 中存在的一些 datasource.xml 文件中进行所有 hibernate (即 jpa)设置项目。然而, hibernate 似乎无论如何都需要它,因为我不断收到
...
Caused by: java.lang.IllegalArgumentException: Not an entity: class ....model.Customer
at org.hibernate.ejb.metamodel.MetamodelImpl.entity(MetamodelImpl.java:160)
at org.springframework.data.jpa.repository.support.JpaMetamodelEntityInformation.<init>(JpaMetamodelEntityInformation.java:58)
at org.springframework.data.jpa.repository.support.JpaPersistableEntityInformation.<init>(JpaPersistableEntityInformation.java:44)
at org.springframework.data.jpa.repository.utils.JpaClassUtils.getMetadata(JpaClassUtils.java:100)
at ...JpaProvider.init(JpaProvider.java:64)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:340)
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:293)
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:130)
... 58 more
适用于我的所有模型。(例如:)
@Entity
@Table(name="customer")
public class Customer extends AbstractPersistable<Long> {
所以我的包的设置如下:
src/main/java - contains the model classes
src/main/resources - contains application context
src/test/java - contains unit tests
src/test/resources - contains test context and datasource (JPA setup)
如果我将 META-INF/persistence.xml 放在 main/resources 中,一切都很好,这意味着 Maven 将构建项目,运行测试,其中 hibernate 将自动创建表。然而,由于我有许多模块项目在我的网络应用程序中组合在一起,我将得到一个
IllegalStateException: No single default persistence unit defined
我的 Web 项目设置是
src/main/resources/META-INF - containing the persistence.xml being deployed to WEB-INF/classes
src/main/webapp/WEB-INF - containing web.xml, faces-config, application-context, ... being deployed to /
src/main/java - containing controller classes being deployed to WEB-INF/classes
所以这几乎是提到的第一个设置 here应该没问题。
如果在我的“模型 jar ”中,我将 META-INF/persistence.xml 放入测试/资源中,我会得到上面提到的“不是实体”异常。
那么...如果我想在我的“模块”jar 中定义(和测试)实体对象并在我的“ View ” war 中使用它们,我该如何设置我的项目?
非常感谢!
编辑:找出原因
IllegalStateException: No single default persistence unit defined
看来,我需要在模型 jar 中将所有持久性单元命名为相同的名称。然而现在,我的网络应用程序提示一个 jar ,而另一个 jar 很好,而两者都有完全相同的设置。我只是无法摆脱“不是实体”异常(exception)。
编辑2:
奇怪的是,我现在有一个项目将构建和单元测试自己的模型,但在 Web 容器内使用时会提示这些模型不是实体,而具有 100% 完全相同设置的第二个项目将可以工作正好。让我觉得我的网络应用程序中有什么地方出了问题,但我就是看不出是什么。
有人遇到过这种情况吗?我在 Google 上找不到任何适合我的设置或提出适用解决方案的有用内容。
编辑3:
似乎是maven集成问题。在我的 Webapp pom 中,我有以下设置:
<dependency>
<groupId>...</groupId>
<artifactId>view-jsf</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>...</groupId>
<artifactId>prototype</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>...</groupId>
<artifactId>security</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
view-jsf 提供了 jsf 特定的东西,在这里并不重要。
原型(prototype)包含一些原型(prototype)模型(实体)定义,包括管理器和提供者。
security 包含安全模型定义,如帐户、角色等,以及仍待实现的 spring-security 特定内容;)
原型(prototype)和安全性都引用了核心项目,这些项目又定义了数据访问以及更多依赖项,例如 spring。
现在有趣的部分是:如果在我的 webapp pom 中我将安全性移到原型(prototype)之前,原型(prototype)实体将正常加载,并且安全实体将抛出 IllegalArgumentException 并说“不是实体”。如果我将原型(prototype)放在安全性之前,原型(prototype)实体将抛出异常。
因此,maven 似乎覆盖了两个项目中相同的内容,因此只有第二个项目能够成功加载。将进一步调查...
编辑4:进一步调查表明,问题在于一个持久性单元内有多个定义 JPA 实体的 jar (example) 。将针对该问题提出一个新问题,并在此处发布链接,因为该线程变得有点长且令人困惑。
最佳答案
将问题压缩成单独的帖子here
当两个 jars 在一个 persistence-unit
中定义了一个 persistence.xml
实体(显式或隐式),然后加载到一个 war 中时,就会导致异常(在我的例子中是由 Maven 提供的)。
解决方案似乎是在 Web 应用程序中只有一个 persistence.xml,并列出其中的所有实体(jar 单元测试除外,它们的资源中必须有一个 persistence.xml)。
仍然想知道是否有更动态的解决方案......
关于hibernate - 非法参数异常 : Not an entity - distributed model definitions in hibernate/jpa and Maven,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7432070/
我刚用 Latex 写完微积分的总结。 现在的主要问题是文件中包含许多我现在并不真正需要的东西。 .tex 文件包含许多我需要用心学习的定义和定理。 定义在 tex 文件中有自己的定义,因此文件中的任
所以我有一个菜单项列表,我想弄清楚我是否应该使用具有类属性的跨度或每个元素的特征的定义列表。以下是我正在考虑的两个选项: 选项 1) // HAML Markup %article.menu-item
考虑下面的代码,它试图实现 class Bar 的部分特化。 .在第一种情况下,foo成员函数是内联定义的,在第二种情况下是外联的。行外定义产生了一个我无法弄清楚的编译错误:error: out-of
我正在使用 Visual Studio Code 开发一个 typescript 项目,包括多个结构如下的 npm 包: 源代码:/src/index.ts 编译后的代码:/dist/... 当我右键
我正在编写一个神经网络类,遇到了两个我不理解的概念。谁能告诉我bias 和momentum 是什么以及做什么 最佳答案 偏差是给予神经元的恒定输入。例如在普通的前馈网络中,您可能有 2 个输入单元、2
假设我在功能文件中有一个场景,如下所示 Given I log in as "super" user When I click on login Then Home page is displayed
关闭。这个问题是opinion-based 。目前不接受答案。 已关闭去年。 已锁定。这个问题及其答案是locked因为这个问题是题外话,但却具有历史意义。目前不接受新的答案或互动。 我读了很多这个词
就像几乎任何一个已经编程了一段时间的人一样,我熟悉“生产代码”这个术语,并且对其含义有一个模糊的认识。然而,有人可以提供一个半严格的定义吗,因为维基百科和谷歌似乎不能?在生产中似乎存在很多灰色地带,例
以下代码是我认为符合伪代码条件的示例,因为它不以任何语言执行,但逻辑是正确的。 string checkRubric(gpa, major) bool brake = false nu
从宠物商店示例中获取以下#definition。给定#definition部分,可以生成JSON结构 例如 给定一个较大的复杂JSON文件,是否可以做一些相反的事情? 给定下面的JSON结构,我可以获
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 7年前关闭。 Improve this qu
很难说出这里问的是什么。这个问题是模棱两可的、模糊的、不完整的、过于宽泛的或修辞的,无法以目前的形式得到合理的回答。如需帮助澄清这个问题以便重新打开它,visit the help center .
Joel Spolsky 在 SO 播客中提到了“浮出水面”。 这是什么意思?它是类似于“暴露”的东西吗,比如“暴露接口(interface)”? 最佳答案 这里引用自 podcast 51 的文字记
我不断遇到这个词的用法,但我从来不理解它的用法或所传达的含义。 像...这样的短语 "add semantics for those who read" "HTML5 semantics" "sema
我正在学习 lisp 语言(做 lisp 例程),在一般情况下我知道什么是例程,但在技术上下文中我可以谈论它,因为我现在开始学习例程。那么,例行公事的真正定义是什么?(我已经用谷歌搜索过这个,但没有找
在 definition of the haskell prelude我们看到 ... 是为无法在 Haskell 中实现的表达式保留的。例如,现在 IO monad 无法在 haskell 中实现。
问题: 原来有单个文件tcpclient.c,运行gcc -o tcpclient tcpclient.c可以顺利完成编译,并能与下载到目标板中的tcpserver成功通讯; 现在把tcpclien
我使用 ergoemacs-mode、clojuremode 和自动完成 自动完成效果很好。我应该按什么才能进入函数的定义?我习惯了 Cursive,但我想使用免费的 Emacs,我需要去定义功能。
我对 nearly.js 很陌生,我想知道与规则相比,分词器/词法分析器做了什么,根据网站: By default, nearley splits the input into a stream of
我正在使用 Gforth ,我想在定义中创建一个词。在 Gforth 的 cmd 行中,我可以输入: create foo ok 或者更具体地说,我定义了一个数组函数,它期望堆栈上的大小并创建一个带有
我是一名优秀的程序员,十分优秀!