本文介紹了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;的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,