类"model.Address"列在persistence.xml文件中,但未映射

use*_*160 30 eclipse jpa java-ee

我创建了一个JPA项目.在那个Eclipse中,在实体类上显示以下错误.

类"model.Address"列在persistence.xml文件中,但未映射

我该如何映射实体类JPA

这是persistence.xml实体:

package model;

import java.io.Serializable;

import javax.persistence.*;

@Entity
public class Address implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    private long id;
    private String city;
    private String country;
    private String province;
    private String postalCode;
    private String street;

    // Getters/setters omitted for brevity.
}
Run Code Online (Sandbox Code Playgroud)

这是persistance.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<persistence 
    xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
    version="2.0" 
>
    <provider>org.eclipse.persistance.example.jpa.20.employee.annotations</provider>

    <persistence-unit name="employee" transaction-type="RESOURCE_LOCAL">
        <class>model.Employee</class>
        <class>model.Address</class>

        <properties>
            <property name="javax.persistence.jdbc.driver" value="oracle.jdbc.OracleDriver" />
            <property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@localhost:1521:orcl" />
            <property name="javax.persistence.jdbc.user" value="scott" />
            <property name="javax.persistence.jdbc.password" value="tiger" />
        </properties>
    </persistence-unit>
</persistence>
Run Code Online (Sandbox Code Playgroud)

Bal*_*usC 104

这是一个Eclipse的怪癖.我最近在创建一个禁用JPA库配置的新JPA项目时遇到了这个问题,但我通过Eclipse New JPA Entity向导创建实体之前没有手动配置JPA库.创建实体后,我在项目的构建路径中配置了JPA库(只需在库中添加目标Java EE服务器运行时),但验证错误仍然存​​在.我可以通过以下至少一种方式解决它:

  1. 右键单击persistence.xml文件,JPA工具 - > 同步类列表.
  2. 或者,右键单击项目,验证.
  3. 或者,关闭/重新打开项目.

这一直是可重复的.我使用的是Eclipse Indigo SR1.配置JPA库创建实体时,不会发生此验证错误.


小智 9

右键单击jpa项目

然后

在此输入图像描述


Boz*_*zho 6

我认为你有错误的JPA提供程序类.它一定要是:

<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
Run Code Online (Sandbox Code Playgroud)

(你设置的那个似乎根本不是一个类,更不用说提供者类了)


ola*_*ure 5

确保您的类使用@Entity注释 (来自javax.persistence.Entity)

我意识到这不是OP的问题,但我被抓住了,谷歌把我送到了这里.