JPA @MappedSuperclass in separate JAR in Eclipse causes validation error quot;The entity has no primary key attribute definedquot;(Eclipse中单独JAR中的jpa@MappdSuperclass导致验证错误Quot;该实体没有定义主键属性Quot;)
问题描述
我有一个用于所有@Entity类的@MappdSuperclass AbstractEntity。只要超类与我的实体在同一个Eclipse项目中,它就可以完美地工作。但是,因为我在几个项目中重用了这个超类,所以我只想把它分解到自己的JAR文件中。当我这样做时(当然我将JAR文件添加到构建路径),Eclipse在我的每个@Entity类上都会给出一个错误:
该实体未定义主键属性。
Eclipse将@Entity注释突出显示为错误的来源。当然,所有类都继承自此AbstractEntity。两个项目中的包名相同。JAR项目具有所有必要的生成路径-包含AbstractEntity的JAR文件项目中没有错误。
当我将其部署到我的应用程序服务器(JBoss 7.1)时,它工作得很好。这使我认为这只是一个Eclipse问题,错误地标识了一个错误。
抽象实体:
package com.xyc.abc;
import java.io.Serializable;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;
@MappedSuperclass
public abstract class AbstractEntity implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
}
简单实体类示例:
@Entity
public class TestEntity extends AbstractEntity {
...
}
我还看到其他一些帖子说,问题可能是超类中的批注在getter上,而不是在字段上-只有当您的实体中没有其他JPA批注(我有)时,这才是问题。有什么想法吗?
推荐答案
看起来这与此处描述的错误有关:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=361042
最终修复它的(实际上更多的解决方法)是将AbstractEntity
添加到包含My Entities的项目的persistence.xml
中的类列表中。尽管AbstractEntity
位于单独的JAR
中,并且本身不是一个具体的实体,但我想这给了Eclipse足够的信息来停止抱怨。这似乎对应用程序本身没有任何不利影响。
这篇关于Eclipse中单独JAR中的jpa@MappdSuperclass导致验证错误&Quot;该实体没有定义主键属性&Quot;的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Eclipse中单独JAR中的jpa@MappdSuperclass导致验证错误&Quot;该实体没有定义主键属性&Quot;
基础教程推荐
- 首次使用 Hadoop,MapReduce Job 不运行 Reduce Phase 2022-01-01
- 如何使用 Eclipse 检查调试符号状态? 2022-01-01
- Java 中保存最后 N 个元素的大小受限队列 2022-01-01
- Spring Boot Freemarker从2.2.0升级失败 2022-01-01
- 如何强制对超级方法进行多态调用? 2022-01-01
- 在螺旋中写一个字符串 2022-01-01
- 由于对所需库 rt.jar 的限制,对类的访问限制? 2022-01-01
- 如何对 HashSet 进行排序? 2022-01-01
- 如何在不安装整个 WTP 包的情况下将 Tomcat 8 添加到 Eclipse Kepler 2022-01-01
- 如何使用 Stream 在集合中拆分奇数和偶数以及两者的总和 2022-01-01