Класс "model.Address" указан в файле persistence.xml, но не отображается
Я создал проект JPA. В этом Eclipse отображается следующая ошибка в классе сущности.
Класс "model.Address" указан в файле persistence.xml, но не отображается
Как я должен отображать класс сущности в persistance.xml
?
Вот объект model.Address
:
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.
}
Вот persistence.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>
Ответы
Ответ 1
Это причуда Eclipse. Недавно у меня возникла такая проблема, когда я создал новый проект JPA с отключенной конфигурацией библиотеки JPA, но не вручную настраивал библиотеки JPA до того, как создал объекты с помощью мастера Eclipse New JPA Entity. После создания сущностей я сконфигурировал библиотеки JPA в Project Build Path (просто добавив целевую среду выполнения Java EE-сервера в Библиотеки), но ошибка проверки остается. Я мог бы решить это, по крайней мере, одним из следующих способов:
- Файл Rightclick
persistence.xml
, JPA Tools → Синхронизировать список классов.
- Или проект rightclick, Validate.
- Или закройте/заново создайте проект.
Это последовательно воспроизводимо. Я использовал Eclipse Indigo SR1. Когда я создаю объекты после настройки библиотек JPA, эта ошибка проверки не возникает.
Ответ 2
Я думаю, что у вас неправильный класс провайдеров JPA. Это должно быть:
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
(тот, который вы установили, похоже, не является классом вообще, не говоря уже о классе поставщика)
Ответ 3
Вам нужно создать файл персистентности и файл сопоставления ORM для JPA, передать файл сопоставления из файла персистентности.
<persistence-unit name="persistenceUnit"
transaction-type="RESOURCE_LOCAL">
<provider>org.datanucleus.api.jpa.PersistenceProviderImpl</provider>
<mapping-file>META-INF/hbase-orm.xml</mapping-file>
<class>com.xxx.logcollector.entity.DefaultLogableEntity</class>
<properties>
<property name="datanucleus.jpa.addClassTransformer" value="false" />
<property name="datanucleus.managedRuntime" value="false" />
....
Создать файл сопоставления ORM
<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/persistence/orm_1_0.xsd"
version="1.0">
<entity class="com.xxx.cne.logcollector.entity.DefaultLogableEntity"
name="DefaultLogableEntity">
<table name="RAW_LOG_COLLECTION" />
<attributes>
<id name="clientHostIP">
<column name="ANALYTICS:CLIENT_IP" />
</id>
<basic name="requestDateTime">
<column name="ANALYTICS:REQUEST_DATETIME" />
</basic>
...
Создать диспетчер сущностей в spring
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
<property name="persistenceUnitName" value="persistenceUnit"></property>
Ответ 4
Если используется затмение, перейдите к Window>Preference>Validation
и снимите флажок Suspend all validators
. Очистите проект и устраните проблему.
Ответ 5
Убедитесь, что ваш класс аннотируется с помощью @Entity
(из javax.persistence.Entity)
Я понимаю, что не проблема OP, но меня это поймало, и Google отправил меня сюда.
Ответ 6
Любое из вышеперечисленных действий не работает.
Для тех, кто ищет "класс xxxx, отображается, но не включен в какую-либо ошибку единицы измерения" в Eclipse или RAD:
- Щелкните правой кнопкой мыши проект и выберите свойства.
- Выберите JPA
- Выберите радиокнопку "Автоматически открывать аннотированные классы"
- ОК и дождитесь завершения проекта.
Эти шаги работали для меня.
Ответ 7
Щелкните правой кнопкой мыши на проекте jpa
затем
![enter image description here]()
Ответ 8
Его следует записать так:
@Entity
**@Table(name="Address",schema="ABCD")** `
... или он может быть написан как:
@Entity
public class Address {
}
Ответ 9
У меня возникла аналогичная ошибка, и при исчезновении папки артефактов eclipse ".settings".
После того, как я создаю артефакты затмения, используя "maven-eclipse-plugin", ошибка исчезла