#eclipse #jpa #glassfish #jpa-2.0 #eclipselink
#eclipse #jpa #glassfish #jpa-2.0 #eclipselink
Вопрос:
У меня возникли некоторые проблемы с адаптером сервера Eclipse для Glassfish 3.1. Я использую автоматически сгенерированные идентификаторы JPA. Если сервер запущен, и у меня есть политика создания и удаления для JPA, то каждый раз, когда происходит горячее повторное развертывание, я получаю большое жирное сообщение об ошибке Eclipse:
не удается развернуть MyWebApp Ошибка развертывания для модуля: MyWebApp:
PER01003: при развертывании обнаружены исключения SQL: PER01000: Получено исключение SQLException, выполняющее инструкцию «СОЗДАТЬ ПОСЛЕДОВАТЕЛЬНОСТЬ ТАБЛИЦ (SEQ_NAME VARCHAR(50) NOT NULL, SEQ_COUNT DECIMAL(38), ПЕРВИЧНЫЙ КЛЮЧ (SEQ_NAME))»:
org.postgresql.util.Исключение PSQLException: ОШИБКА: отношение «последовательность» уже существует
Я знаю, что это всего лишь предупреждение Glassfish (чертовски старое …: http://java.net/projects/glassfish/lists/persistence/archive/2006-11/message/221 ) и не является опасным (это потому, что drop.ddl удаляет только одну строку таблицы последовательности вместо всей таблицы).
Это просто ЛАВАШ, чтобы видеть это всплывающее окно с ошибкой каждый раз, когда я сохраняю ресурс. Есть идеи, как избавиться от нее, не теряя функциональности создания и удаления? По крайней мере, чтобы это не мешало разработке…
Мой persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0">
<persistence-unit name="JPATestsCascadePU" transaction-type="JTA">
<jta-data-source>jdbc/myDB</jta-data-source>
<properties>
<property name="eclipselink.ddl-generation"
value="drop-and-create-tables" />
</properties>
</persistence-unit>
</persistence>
Пример объекта, использующего автоматически сгенерированный идентификатор:
@Entity
public class Website {
@Id
@GeneratedValue
private long id;
private String value;
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
Ответ №1:
Вам не понравится этот ответ: отключите функцию создания и удаления после первоначального запуска на сервере.
Честно говоря, кажется, что create-and-drop замедлит перераспределение… именно это и происходит при сохранении ресурса.
Вы можете сделать так, чтобы сообщение появлялось реже, отключив автоматическую публикацию…
Примечание: эта проблема относится к плагинам интеграции GlassFish для Eclipse, выпущенным до 2011-10-24, когда они взаимодействуют с GlassFish Server 3.1.1 и новее.
Комментарии:
1. Спасибо @vkraemer! Вероятно, вы правы в отношении замедления перераспределения. Однако я использовал эту настройку для динамического тестирования сопоставлений JPA, проверки и взаимодействия с транзакциями. Такого рода приложения действительно маленькие — я отношусь к ним просто как к тестированию, и поэтому мне очень понравилась эта функция чистого воссоздания наряду с автоматической публикацией при каждом «сохранении». Это позволяет мне нажать ctrl s для измененного класса и забыть об остальном. Я с нетерпением жду понедельника 🙂 Еще раз спасибо!
2. После вашего добавления плагин работает как шарм. Большое спасибо, Винс!
3. Я использую Glassfish 3.1.2 вместе с ant для развертывания, а затем повторного развертывания своих классов, поэтому эта ошибка, похоже, относится и к последней версии Glassfish.