Eclipse 3.7 Ошибка проверки объекта (не в 3.6)

У меня около 100 маркеров ошибок 50 в каждом сообщении. Но не у каждой сущности есть маркер ошибки. У класса Account его нет, но у каждого класса есть поле Account. Класс с подверженной ошибкам сущностью (классы с полями учетной записи) в качестве поля также не имеет этой ошибки.

Class "com.model.AccountChange" is mapped, but is not included in any persistence unit AccountChange.java Этот маркер находится в строке определения класса, а не в аннотации @Entity.

@Entity
public class AccountChange extends BaseObject {

Следующий маркер ошибки находится на строке аннотации @ManyToOne Target entity "com.model.Account" for "account" is not an Entity

@ManyToOne(cascade = { CascadeType.ALL })
@NotNull
private Account account;

Я скачал Eclipse 3.7 Indigo Java EE и установил subclipse и Jboss Tools 3.3M2.

Этот проект отлично работал в Eclipse 3.6, и кто-то еще столкнулся с той же ошибкой и переключился обратно на 3.6, но я подумал, что, может быть, кто-то знает источник.

РЕДАКТИРОВАТЬ: первый маркер может быть разрешен с помощью свойств проекта -> JPA -> автоматически обнаруживать аннотированные классы. Другая ошибка все еще сохраняется.

РЕДАКТИРОВАТЬ: Это странно, 57 из 59 оставшихся ошибок связаны с полем учетной записи. у меня в пути к классам моей модели есть отдельный файл persistence.xml. Если я добавляю класс com.model.Account, я получаю сообщение об ошибке «класс не может быть разрешен», если я изменяю его на AccountGroup, проблем нет. Оставшиеся 2 ошибки также не могут быть устранены. Другие сущности могут быть.

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" 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">
<persistence-unit name="project">
<class>com.model.AccountGroup</class>
</persistence-unit>
</persistence>

person webstrap    schedule 28.07.2011    source источник
comment
Так вы хотите сказать, что у вас есть несколько файлов persistence.xml?   -  person Terrell Plotzki    schedule 28.07.2011
comment
да, у нас есть один в исходной папке для разработки eclipse (тот, который я скопировал здесь), и другие, которые заменяют этот файл для разработки или живого сервера.   -  person webstrap    schedule 29.07.2011


Ответы (4)


у нас есть один в исходной папке для разработки eclipse (тот, который я скопировал здесь), а другие заменяют этот файл для разработки или живого сервера.

Это ваша проблема, проверка JPA в настоящее время поддерживает только один постоянный модуль или файл persistence.xml для каждого проекта:

В настоящее время Dali поддерживает только один Persistence Unit и один XML-файл Persistence для каждого проекта. В проекте JPA могут существовать и другие конфигурации, но обработка проверки и значений по умолчанию может быть неправильной при использовании нескольких единиц сохраняемости.

Вы можете попробовать добавить <exclude-unlisted-classes>false</exclude-unlisted-classes> в свой файл persistence.xml в папку META-INF. И наоборот, сделайте его true и перечислите там все ваши классы сущностей, а не только AccountGroup.

person Terrell Plotzki    schedule 29.07.2011
comment
Два других файла persistence-dev/prod.xml находятся в проекте/ресурсах, поэтому я думал, что он все равно их не найдет. Но сегодня забыл свой ноутбук, завтра проверю. - person webstrap; 01.08.2011
comment
нет, не помогло. Они имеют другое имя в другой папке, и скрипт сборки перезаписывает его ими. но спасибо - person webstrap; 03.08.2011
comment
50 маркеров для сущностей, которые ссылаются на класс Account, и 2 маркера для двух других сущностей. Маркер всегда находится в аннотации @ManyToOne(fetch=FetchType.LAZY) или просто @ManyToOne, а сообщение является целевой сущностью com.model.Account для spawnedAccount не является сущностью - person webstrap; 03.08.2011
comment
Какая аннотация к com.model.Account? @Entity или @MappedSuperclass? - person Terrell Plotzki; 03.08.2011

Если вы знаете, что это не ошибки, вы можете:

Окно -> Настройки -> Сохранение Java -> JPA -> Ошибки/предупреждения.

В разделе «Атрибут» измените «Целевой объект не является объектом» на «Игнорировать».

person dustin.schultz    schedule 05.02.2015

Итак, есть ли у класса Account аннотация @Entity и присутствует ли она в файле persistence.xml?

person Tassos Bassoukos    schedule 28.07.2011
comment
У него есть аннотация @Entity, но ее нет в файле persistence.xml, как я уже писал, он работал и все еще работает в ‹eclipse 3.7. - person webstrap; 28.07.2011
comment
И первый маркер решается с помощью Project Properties -> JPA -> Автоматическое обнаружение аннотированных классов Второй все еще сохраняется - person webstrap; 28.07.2011

У меня была такая же ошибка, но мне помогла установка JPA для фасетов проекта и сделать его доступным для обнаружения... :) спасибо

person tosha Shah    schedule 25.09.2012