java - Eclipse 中单独 JAR 中的 JPA @MappedSuperclass 导致验证错误 "The entity has no primary key attribute defined"

标签 java eclipse jpa entity mappedsuperclass

我有一个@MappedSuperclass AbstractEntity,用于我所有的@Entity 类。只要父类(super class)与我的实体位于同一个 Eclipse 项目中,它就可以完美运行。但由于我在多个项目中重用了这个父类(super class),所以我只想将它分解成自己的 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 {
 ...
 }

我看到其他一些帖子说问题可能是父类(super class)中的注释在 getter 而不是字段上 - 如果您的实体中没有其他 JPA 注释,这只是一个问题,我愿意。有什么想法吗?

最佳答案

看起来这与此处描述的错误有关:

https://bugs.eclipse.org/bugs/show_bug.cgi?id=361042

最终修复它(实际上更多的是解决方法)是将 AbstractEntity 添加到包含我的实体的项目的 persistence.xml 中的类列表中。尽管 AbstractEntity 位于单独的 JAR 中并且本身不是具体实体,但我想这为 Eclipse 提供了足够的信息以停止提示。这似乎对应用程序本身没有任何不利影响。

关于java - Eclipse 中单独 JAR 中的 JPA @MappedSuperclass 导致验证错误 "The entity has no primary key attribute defined",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12045710/

相关文章:

java - 使用 Play 寻找多对多实体交集的优雅方式

java - 在 Spring 代码库配置中处理属性文件的正确方法

eclipse - '#{customer.all }' Error reading ' all' on type com.corejsf.CustomerBean] 根本原因为 java.lang.NullPointerException

java - 组织.hibernate.PersistentObjectException : detached entity passed to persist exception

java - 对映射父类(super class)的引用

eclipse - 启动调试目标时禁用标记为 [Debug Console] 的第二个空控制台

Java:第二个窗口是空白的

java - 将响应与 Logica SMPP 异步模式中的请求相关联

javascript - Frida - 调用特定方法重载

java - 如何在 Java 上创建数据流图