IndoKnight, что идеально завернуть вам дал как Exception семантика в рамках Java EE.. работа.
вот две единственные строки «bean provider», то есть вы и я, должны знать об исключениях в Java EE:
ваш bean полностью свободен для восстановления от любого типа исключения или ошибки, как вы считаете нужным, в отношении других ограничений, под которыми может находиться bean. Если вы оправились от исключения, то поздравляю-проблем нет anymore =)
соответствующим ограничением может быть, например, то, что» корпоративные компоненты, использующие демаркацию транзакций, управляемых контейнером, не должны использовать методы управления транзакциями, которые мешают границам демаркации транзакций контейнера», чтобы процитировать Java EE 7 учебник 48-2 страницы (вы хотите программно установить откат управляемой транзакции контейнера, используйте метод ejbcontext.setRollbackOnly()).
Вам также не рекомендуется, как и в любом типе приложения Java, обрабатывать Throwable или Error брошенный с очень низкого уровня. RuntimeException теоретически считается в этой категории, поскольку он так лихо сигнализирует об «ошибке разработчика», которая похожа на» совершенно неожиданную», но мы все знаем, что это не так.
в основном, неожиданное исключение (исключения времени выполнения + другое дерьмо, которое мы предполагаем, происходит от кого-то другого) предполагается, что ваш код не может быть обработан и должен обрабатываться сервером. Сервер должен обрабатывать исключение» unhandleable» (посмотреть спецификация EJB 3.2, стр. 204), напечатав что-то об этом в журнале (я перейду к деталям немного позже!).
более конкретно..
вы спросили (И вот во что я верю или не верны):
все исключения приложений описанное выше должно быть брошено
непосредственно EJB клиенту?
да. и транзакция (если она активна) не должна откатываться, если вы явно не указываете, что она должна использовать атрибут отката ApplicationException. Исключение Java-кода-это очень естественная вещь. Java EE не имеет намерения разрушать эту модель программирования. Так что вперед, бросьте проверенные исключения, как вам нравится, заставляя клиентов пытаться поймать те или отметьте исключения среды выполнения как исключения приложения и бросьте их тоже. Счастливого броска!
если системные исключения обернуты внутри javax.EJB-компонента.EJBException перед
бросая клиенту, затем javax.EJB-компонента.EJBException считаются
Системное Исключение?
да, но не по той причине, которую вы предоставляете. Чтобы быть ясным, нет типа SystemException. Это просто причудливая формулировка для описания таких исключений, которые большинство бобов там не могло произойти, и скорее всего, они происходят из контейнера EJB. Ваш код определенно не должен вызывать EJBException. Это, вероятно, только помешало бы уму сервера. Также вы не можете аннотировать исключение как @ApplicationException так как вы не владеете кодом, он предоставляется API Java EE. Вы можете расширить EJBException, но не имеет смысла маскировать ваш код как часть кодовой базы сервера. Наиболее главное, с EJBException расширяет RuntimeException, я думаю, что безопасно классифицировать EJBException как «исключение системного уровня».
Берегись Дьявола
некоторые пульт ДУ клиенты получат исключения remoteexception вместо исключения EJBException.
перехватчики что вы, возможно, даже не знаете в огромном проекте предприятия, может проглотить исключения, брошенные из вашего метода выполнение активной транзакции commit хотя у вас никогда не было планов позволить ему это сделать.
держу пари, вы думаете, что a подавленные исключением всегда извлекается с помощью Throwable.getCause(). Обратите внимание, что спецификация EJB 3.2 не говорит, что контейнер должен или должен щадить ссылку на подавленную причину. Фактически, единственное, что должен сделать контейнер, это зарегистрировать исключение. Тогда, если Боба нет одноэлементный экземпляр bean должен быть отброшен и больше никогда не использоваться. Кроме того, если компонент является управляемым сообщением компонентом, только тогда требуется «обернуть»исходное исключение. Как «обернуть» исключение не указано. Супер портативный прохладный код, вероятно, следует взглянуть на подобное.getCause() метод и Throwable.getSuppressed () тоже. Не ожидайте, что в вашем коде обработки всегда будет найдено исходное исключение.
асинхронные методы (методы публичного сеанса bean аннотированы @асинхронные), который возвращает void, не может распространять исключение на своего клиента. Таким образом, они не должны объявлять или исключения приложений (посмотреть спецификация EJB 3.2 страница 82). Обратите внимание, что при вызове асинхронного метода сервер может не предоставить потоковые ресурсы для обслуживания вашего запроса, и если это так, он должен бросить.. EJBException (страница 48)!
Вопросы: реестр контрактов
Ошибка при подписании сведения о БО
Здравствуйте! Кто-нибудь знает, что делать с ошибкой при подписании сформированных сведений о БО (реестр контрактов, регистрация нового ГК)?
java.lang.RuntimeException: javax.ejb.EJBTransactionRolledbackException: nested exception is: javax.ejb.EJBException: See nested exception; nested exception is: java.lang.RuntimeException: Error occurred while validating print form [printFormContentId = 281983921]. Ошибка при валидации по схеме.
-

IrinaI72 - Новичок
- Сообщений: 2
- Зарегистрирован: 08 апр 2019, 10:36
- Благодарил (а): 0 раз.
- Поблагодарили: 0 раз.
- Роль: Заказчик
- Пункты репутации: 0

Re: Вопросы: реестр контрактов
Da10 » 08 апр 2019, 13:30
Коллеги, такой вопрос. Если внести изменения в карточку контракта по причине технической ошибки (неверно указан бюджет) через функционал «внести изменения» -> «исправление сведений», это является нарушением, если уже больше 5 дней с момента заключения прошло или нет? При сохранении, вроде не ругается.
«Ребята! У нас две проблемы: Минобороны и пуговица. Мы пуговицу найти можем? Чисто теоретически? Можем. А с Минобороны… ничего. Вывод: ищем пуговицу.»
-

Da10 - Завсегдатай
- Сообщений: 851
- Зарегистрирован: 06 дек 2018, 10:15
- Благодарил (а): 7 раз.
- Поблагодарили: 23 раз.
- Роль: Заказчик
- Пункты репутации: 21

Re: Вопросы: реестр контрактов
kir_dfg » 08 апр 2019, 13:32
Da10 писал(а):Коллеги, такой вопрос. Если внести изменения в карточку контракта по причине технической ошибки (неверно указан бюджет) через функционал «внести изменения» -> «исправление сведений», это является нарушением, если уже больше 5 дней с момента заключения прошло или нет? При сохранении, вроде не ругается.
Нет, не является. Наоборот, устраняете нарушение. Если что, можно отбиться всегда.
Главное, чтобы это было именно исправление, а не внесение изменений в контракт.
Машины времени есть у каждого. Те, что переносят в прошлое, зовутся воспоминаниями, а те, что уносят в будущее — мечтами ©
-

kir_dfg - Профессор
- Сообщений: 12112
- Зарегистрирован: 19 дек 2016, 11:34
- Откуда: Юпитер-2
- Благодарил (а): 173 раз.
- Поблагодарили: 1534 раз.
- Роль: Заказчик
- Пункты репутации: 635







Re: Вопросы: реестр контрактов
Da10 » 08 апр 2019, 13:40
kir_dfg писал(а):
Da10 писал(а):Коллеги, такой вопрос. Если внести изменения в карточку контракта по причине технической ошибки (неверно указан бюджет) через функционал «внести изменения» -> «исправление сведений», это является нарушением, если уже больше 5 дней с момента заключения прошло или нет? При сохранении, вроде не ругается.
Нет, не является. Наоборот, устраняете нарушение. Если что, можно отбиться всегда.
Главное, чтобы это было именно исправление, а не внесение изменений в контракт.
Спасибо. Будем устранять)
«Ребята! У нас две проблемы: Минобороны и пуговица. Мы пуговицу найти можем? Чисто теоретически? Можем. А с Минобороны… ничего. Вывод: ищем пуговицу.»
-

Da10 - Завсегдатай
- Сообщений: 851
- Зарегистрирован: 06 дек 2018, 10:15
- Благодарил (а): 7 раз.
- Поблагодарили: 23 раз.
- Роль: Заказчик
- Пункты репутации: 21

Re: Ошибка при подписании сведения о БО
kir_dfg » 08 апр 2019, 14:19
IrinaI72 писал(а):Здравствуйте! Кто-нибудь знает, что делать с ошибкой при подписании сформированных сведений о БО (реестр контрактов, регистрация нового ГК)?
java.lang.RuntimeException: javax.ejb.EJBTransactionRolledbackException: nested exception is: javax.ejb.EJBException: See nested exception; nested exception is: java.lang.RuntimeException: Error occurred while validating print form [printFormContentId = 281983921]. Ошибка при валидации по схеме.
Здравствуйте. Давно вылезло? Если сегодня, то только ждать.
А так посмотрите, нет ли где длинных строк, пустых полей и прочего.
Машины времени есть у каждого. Те, что переносят в прошлое, зовутся воспоминаниями, а те, что уносят в будущее — мечтами ©
-

kir_dfg - Профессор
- Сообщений: 12112
- Зарегистрирован: 19 дек 2016, 11:34
- Откуда: Юпитер-2
- Благодарил (а): 173 раз.
- Поблагодарили: 1534 раз.
- Роль: Заказчик
- Пункты репутации: 635







Re: Обсуждение: обсуждение техподдержки и крики души
IrinaI72 » 08 апр 2019, 14:54
Отвечая на свой же вопрос, вдруг кому-то пригодится.. Если при подписании сформированных сведений о БО появляется ошибка на всю страницу java.lang. и т.д., вернитесь в Информацию о поставщике и проставьте там появившиеся после обновления поля «Наименование объекта почтовой связи» и «Номер ячейки».
-

IrinaI72 - Новичок
- Сообщений: 2
- Зарегистрирован: 08 апр 2019, 10:36
- Благодарил (а): 0 раз.
- Поблагодарили: 0 раз.
- Роль: Заказчик
- Пункты репутации: 0

Re: Вопросы: реестр контрактов
annmok » 08 апр 2019, 17:09
коллеги, добрый день.
ошибка perform publication contract with message, затем после нажатия на кнопку ок- internal server error. . И все, висит глухо, крутится, пока руками не наберёшь в строке поиска адрес заново. Другие контракты-не знаю, у меня не было пока шанса попробовать, не заключали больше ничего. Сейчас доеду до работы и попробую сформировать контракт вручную..
воюю с техподдержкой, ошибка сохраняется, была надежды что новый контракт смогу опубликовать..как бы не так:((( Подскажите,можт я, курица, делаю что-то неправильно..
Нажала подписать и разместить в модуле «заключение контрактов». Контракт ушел в ЕИС.
Потом зашла в Реестр контрактов,нажала сформировать сведения о контракте,выбрала нужную закупку, заполнила все и отправляю на размещение и контроль…
по логике все верно… но блин ошибка,хоть ты убейся.
Количество символов в наименовании контракта небольшое. перевыбирать извещение по рекомендации ТП пробовала… Ставить гарантии по контракту
(продукты!) пробовала.. а воз и ныне там. Сегодня 08 апреля.. контракт от 11 марта… каждый день начинаю утро с письма в ТП…
-

annmok - Завсегдатай
- Сообщений: 247
- Зарегистрирован: 17 мар 2016, 11:22
- Благодарил (а): 91 раз.
- Поблагодарили: 10 раз.
- Роль: Заказчик
- Пункты репутации: 11

Re: Вопросы: реестр контрактов
ДиМкА » 08 апр 2019, 17:38
annmok писал(а):воюю с техподдержкой, ошибка сохраняется, была надежды что новый контракт смогу опубликовать..как бы не так:((( Подскажите,можт я, курица, делаю что-то неправильно..Нажала подписать и разместить в модуле «заключение контрактов». Контракт ушел в ЕИС.Потом зашла в Реестр контрактов,нажала сформировать сведения о контракте,выбрала нужную закупку, заполнила все и отправляю на размещение и контроль… по логике все верно… но блин ошибка,хоть ты убейся.Количество символов в наименовании контракта небольшое. перевыбирать извещение по рекомендации ТП пробовала… Ставить гарантии по контракту (продукты!) пробовала.. а воз и ныне там. Сегодня 08 апреля.. контракт от 11 марта… каждый день начинаю утро с письма в ТП…
Сегодня такая же ошибка
ДиМкА писал(а):После обновления вернулась ошибка: при публикации контракта «Произошла ошибка performPublicationContractWithMessage»/»Internal Server Error».
Плагин переустановил, перезагрузился — не уходит.
Причем на разных машинах — одно и тоже.
Обсуждение: обсуждение техподдержки и крики души
post454648.html#p454648
-

ДиМкА - Профессор
- Сообщений: 7933
- Зарегистрирован: 01 ноя 2014, 00:31
- Благодарил (а): 13 раз.
- Поблагодарили: 1558 раз.
- Роль: Заказчик
- Пункты репутации: 589






Re: Вопросы: реестр контрактов
ДиМкА » 09 апр 2019, 09:19
Сегодня (после проведения регламентных работ) ошибка вроде ушла, направил на контроль контракт.
ДиМкА писал(а):После обновления вернулась ошибка: при публикации контракта «Произошла ошибка performPublicationContractWithMessage»/»Internal Server Error».
Плагин переустановил, перезагрузился — не уходит.
Причем на разных машинах — одно и тоже.
-

ДиМкА - Профессор
- Сообщений: 7933
- Зарегистрирован: 01 ноя 2014, 00:31
- Благодарил (а): 13 раз.
- Поблагодарили: 1558 раз.
- Роль: Заказчик
- Пункты репутации: 589






Вернуться в Работа заказчика
Кто сейчас на форуме
Зарегистрированные пользователи: ASGOR, Google [Bot]
Логирование ошибок программы EDI Connector ведётся по умолчанию по пути C:EdiConnectorlogsevents.log.
Для быстрого поиска темы с описанием ошибки, в поле поиска копируйте начало ошибки без директорий.
Unable to execute file: Create Process failed; code 2 The system cannot find the file specified
Ошибка возникает при завершении процесса установки (Finishing Instalation).
Причина: На ПК не установлен Microsoft .NET FrameWork 2.0 или выше.
Решение:
- Удалите EDI Connector.
- Установите .NET FrameWork 2.0 или выше.
- Установите EDI Connector.
Unable to find a version of the runtime to run this application
Cannot create process
Причина: На ПК не установлен Microsoft.NET FrameWork 2.0 или выше.
Решение:
- Удалите EDI Connector.
- Установите .NET FrameWork 2.0 или выше.
- Установить EDI Connector.
Can’t send xml: Could not find a part of the path ‘F:export’
Can’t send binaries: Could not find a part of the path ‘F:export’
Причина: Программа не может обратиться к указанной директории. Вероятно, что это путь к сетевому диску.
Решение: Используйте абсолютный путь. Пример: ‘\fs-7.szexport.local1COrdersexport’. Либо используйте безусловный путь через IP адрес. Пример: ‘192.168.131.70F:1COrdersexport’.
Can’t read listMB: Could not find a part of the path ‘F:importORDER’
Причина: Не находит директорию по типу файла или невозможно создать папку с именем типа файла в указанной директории импорта ‘F:import’. Возможно, что дело в сетевом диске.
Решение: Используйте абсолютный путь. Пример: ‘\fs-7.szexport.local1COrdersexport’. Либо используйте безусловный путь через IP адрес. Пример: ‘192.168.131.70F:1COrdersexport’.
Can’t send xml: Access to the path ‘\fs-7.szexport.local1COrdersexport’ is denied
Can’t send binaries: Access to the path ‘\fs-7.szexport.local1COrdersexport’ is denied
Причина: У пользователя, запускающего службу EdiServiceService, недостаточно прав для доступа в директорию.
Решение:
- Если служба EdiServiceService запущена под локальным пользователем, то используйте пользователя с администраторскими правами.
- Если службы находятся в Мой компьютер ⇒ Контекстное меню «Управление» ⇒ Службы и приложения, выберите службу EdiServiceService, затем в контекстном меню выберите «Запустить».
Can’t send xml: The given path’s format is not supported
Can’t send binaries: The given path’s format is not supported
Причина: Формат пути к файлам указан неверно/не указана маска файла.
Решение: Проверьте во вкладке «Соединения» поле «Путь экспорта». Директория для экспортируемых документов должна быть прописана только в одном месте (в поле «Путь экспорта», либо в «Расширенный экспорт»). При указании директории в «Расширенный экспорт» заполните маску для документа.
Необрабатываемое исключение в приложении. При нажатии кнопки «Продолжить» приложение проигнорирует ошибку и попытается продолжить работу. При нажатии кнопки «Выход» приложение немедленно завершит работу. Устройство не готово.
Причина: Приложение было запущено без прав администратора (Рис. 1).

Решение: Нажмите кнопку «Выход» и запустите приложение от имени администратора.
Ответ не является правильным XML
Причина: EDI Connector пытается скачать файл не xml-формата.
Решение:
- Во вкладке «Соединения» поставьте галочку в поле «Игнорировать сертификат».
- Отметьте галочкой поле «Выделить».
- Нажмите кнопку «Сохранить».
- Перезапустите службу (нажмите «Отправить/получить всё»).
Internal service error: Неправильное магическое число в заголовке GZip. Передача должна идти в поток GZip
Решение:
- Во вкладке «Соединения» измените адрес сервиса. Адрес soap.ediweb.ru/wsedi/services/EDIServiceSoap замените на https://service.ediweb.ru/wsedi/services/EDIServiceSoap.
- Отметьте галочкой поле «Выделить».
- Нажмите кнопку «Сохранить».
- Перезапустите службу.
java.rmi.ServerException: EJBException:; nested exception is:
javax.ejb.EJBException: Error in ‘lv.fis.edi.control.ejb.handlers.SendListChangeStateHandler.handle()’ while handle SendListChangeState event.; CausedByException is:
from m in class lv.fis.edi.comp.edi.UPDResponseModel where m.sendListId = ?
Решение:
Очистите файл status_cache.xml, который находится в папке, где установлен коннектор. По умолчанию: C:EdiConnectorbinstatus_cache.xml
В случае, если ошибка не решена, обратитесь в поддержку Ediweb.
Internal service error: Базовое соединение закрыто: Непредвиденная ошибка при передаче…
Решение:
Смените адрес SOAP на другой. Варианты адреса:
- https://soap.ediweb.ru/wsedi/services/platform
- https://service.ediweb.ru/wsedi/services/platform
I have an entity called Medico which was created as an Entity Class from Database, hence I think the entity definition is failsafe here, nevertheless the definition is the following:
@Entity
@Table(name = "medico")
@XmlRootElement
@NamedQueries({All named queries here})
public class Medico implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@NotNull
@Column(name = "idMedico")
private Integer idMedico;
@Basic(optional = false)
@NotNull
@Column(name = "Identificacion")
private int identificacion;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 33)
@Column(name = "Primer_Nombre")
private String primerNombre;
@Size(max = 33)
@Column(name = "Segundo_Nombre")
private String segundoNombre;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 33)
@Column(name = "Primer_Apellido")
private String primerApellido;
@Size(max = 33)
@Column(name = "Segundo_Apellido")
private String segundoApellido;
@Basic(optional = false)
@NotNull
@Column(name = "Telefono")
private long telefono;
@Column(name = "Telefono_Celular")
private BigInteger telefonoCelular;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 33)
@Column(name = "Direccion")
private String direccion;
// Constructors..
// Getters and setters..
}
I want to create new Medico entities on MySql database, and this is how I am doing so:
@ManagedBean
@ViewScoped
public class ConsultaMedicos implements Serializable {
// Variables Definition ..
@EJB
private DoctorsFacadeLocal doctorsFacade;
// Constructor and other methods ..
public String save()
{
try{
doctorsFacade.save(consultedDoctor);
FacesMessage fm = new FacesMessage(FacesMessage.SEVERITY_INFO, CREATE_SUMMARY, null);
FacesContext.getCurrentInstance().addMessage(CREATE_SUMMARY, fm);
}
catch(Exception ex){
FacesMessage fm = new FacesMessage(FacesMessage.SEVERITY_ERROR, CREATE_ERROR_SUMMARY, null);
FacesContext.getCurrentInstance().addMessage(CREATE_ERROR_SUMMARY, fm);
return null;
}
return "listaMedicos.xhtml";
}
...
}
@Local
public interface DoctorsFacadeLocal {
List<Medico> findAllDoctors();
Medico findDoctorByIdNumber(int identificacion);
void edit(Medico medico);
void save(Medico medico);
}
@Stateless
public class DoctorsFacade implements DoctorsFacadeLocal {
@PersistenceContext
private EntityManager em;
// Other methods..
@Override
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public void save(Medico medico)
{
em.persist(medico);
em.flush();
}
}
After I call save() from my JSF page, I get the following exception:
javax.ejb.EJBException
at com.sun.ejb.containers.BaseContainer.processSystemException(BaseContainer.java:5194)
at com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:5092)
at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4880)
at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2039)
at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1990)
at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:222)
at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:88)
at $Proxy157.save(Unknown Source)
at com.lemm.web.bean.ConsultaMedicos.save(ConsultaMedicos.java:89)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at javax.el.BeanELResolver.invokeMethod(BeanELResolver.java:737)
at javax.el.BeanELResolver.invoke(BeanELResolver.java:467)
at javax.el.CompositeELResolver.invoke(CompositeELResolver.java:254)
at com.sun.el.parser.AstValue.invoke(AstValue.java:228)
at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:297)
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
at javax.faces.component.UICommand.broadcast(UICommand.java:315)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:409)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1534)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98)
at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:326)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:227)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:170)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:822)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:719)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1013)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
at java.lang.Thread.run(Thread.java:662)
Caused by: javax.validation.ConstraintViolationException: Bean Validation constraint(s) violated while executing Automatic Bean Validation on callback event:'prePersist'. Please refer to embedded ConstraintViolations for details.
at org.eclipse.persistence.internal.jpa.metadata.listeners.BeanValidationListener.validateOnCallbackEvent(BeanValidationListener.java:90)
at org.eclipse.persistence.internal.jpa.metadata.listeners.BeanValidationListener.prePersist(BeanValidationListener.java:62)
at org.eclipse.persistence.descriptors.DescriptorEventManager.notifyListener(DescriptorEventManager.java:698)
at org.eclipse.persistence.descriptors.DescriptorEventManager.notifyEJB30Listeners(DescriptorEventManager.java:641)
at org.eclipse.persistence.descriptors.DescriptorEventManager.executeEvent(DescriptorEventManager.java:200)
at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerNewObjectClone(UnitOfWorkImpl.java:4216)
at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.cloneAndRegisterNewObject(RepeatableWriteUnitOfWork.java:576)
at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.internalRegisterObject(UnitOfWorkImpl.java:2883)
at org.eclipse.persistence.internal.sessions.MergeManager.registerObjectForMergeCloneIntoWorkingCopy(MergeManager.java:932)
at org.eclipse.persistence.internal.sessions.MergeManager.mergeChangesOfCloneIntoWorkingCopy(MergeManager.java:492)
at org.eclipse.persistence.internal.sessions.MergeManager.mergeChanges(MergeManager.java:263)
at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.mergeCloneWithReferences(UnitOfWorkImpl.java:3467)
at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.mergeCloneWithReferences(RepeatableWriteUnitOfWork.java:363)
at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.mergeCloneWithReferences(UnitOfWorkImpl.java:3427)
at org.eclipse.persistence.internal.jpa.EntityManagerImpl.mergeInternal(EntityManagerImpl.java:452)
at org.eclipse.persistence.internal.jpa.EntityManagerImpl.merge(EntityManagerImpl.java:429)
at com.sun.enterprise.container.common.impl.EntityManagerWrapper.merge(EntityManagerWrapper.java:286)
at com.lemm.ejb.facade.DoctorsFacade.save(DoctorsFacade.java:61)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1052)
at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1124)
at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:5367)
at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:619)
at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:801)
at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:571)
at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doAround(SystemInterceptorProxy.java:162)
at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:144)
at sun.reflect.GeneratedMethodAccessor78.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:862)
at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:801)
at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:371)
at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:5339)
at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:5327)
at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:214)
... 47 more
What am I doing wrong? What am I missing?
If it serves for anything heres my persistence.xml
<persistence-unit name="lemmPU" transaction-type="JTA">
<jta-data-source>jdbc/lemmdb</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
</properties>
</persistence-unit>
Я пытаюсь запустить этот базовый код JPA/EJB:
public static void main(String[] args){
UserBean user = new UserBean();
user.setId(1);
user.setUserName("name1");
user.setPassword("passwd1");
em.persist(user);
}
Я получаю эту ошибку:
javax.ejb.EJBException: javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist: com.JPA.Database
Любые идеи?
Я ищу в Интернете, и причина, по которой я нашел, была:
Это было вызвано тем, как вы создали объекты, т.е. если вы явно задали свойство ID. Исправлено удаление идентификатора.
Но я не понял, что мне нужно изменить, чтобы заставить код работать?
Ответ 1

Скажем, у вас есть два объекта Album и Photo. Альбом содержит много фотографий, поэтому он имеет отношение от одного до многих.
Класс альбома
@Entity
public class Album {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
Integer albumId;
String albumName;
@OneToMany(targetEntity=Photo.class,mappedBy="album",cascade={CascadeType.ALL},orphanRemoval=true)
Set<Photo> photos = new HashSet<Photo>();
}
Класс фотографий
@Entity
public class Photo{
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
Integer photo_id;
String photoName;
@ManyToOne(targetEntity=Album.class)
@JoinColumn(name="album_id")
Album album;
}
Что нужно сделать, прежде чем продолжать или объединить, нужно установить ссылку на альбом в каждой фотографии.
Album myAlbum = new Album();
Photo photo1 = new Photo();
Photo photo2 = new Photo();
photo1.setAlbum(myAlbum);
photo2.setAlbum(myAlbum);
Вот как присоединить связанный объект до того, как вы будете продолжать или сливаться.
Ответ 2
Ошибка возникает из-за того, что установлен идентификатор объекта. Спящий режим различает переходные и отдельные объекты, а persist работает только с переходными объектами. Если persist завершает удаление объекта (что будет связано с тем, что идентификатор установлен), он вернет ошибку «отсоединенный объект, прошедший для сохранения». Вы можете найти более подробную информацию здесь и здесь.
Однако это применимо только в том случае, если вы указали первичный ключ, который должен быть автоматически сгенерирован: если поле настроено всегда на ручной настройку, тогда ваш код работает.
Ответ 3
удалить
user.setId(1);
поскольку он автоматически генерируется на БД,
и продолжайте с помощью команды persist.
Ответ 4
Я получил ответ, я использовал:
em.persist(user);
Я использовал слияние вместо persist:
em.merge(user);
Но не знаю, почему упорство не сработало.: (
Ответ 5
если вы используете для создания стратегии id = GenerationType.AUTO в своей сущности.
Заменяет user.setId (1) на user.setId (null), и проблема решена.
Ответ 6
Я знаю, что он слишком поздно и уверен, что каждый получил ответ. Но немного больше, чтобы добавить к этому: когда установлен GenerateType, persist() на объекте должен получить генерируемый идентификатор.
Если уже установлено значение, заданное пользователем Id, hibernate рассматривает его как сохраненную запись и поэтому обрабатывается как отсоединенный.
если id равен null — в этой ситуации исключение нулевого указателя возникает, когда тип AUTO или IDENTITY и т.д., если идентификатор не генерируется из таблицы или секировки и т.д.
design: это происходит, когда таблица имеет свойство bean в качестве первичного ключа.
GenerateType должен быть установлен только тогда, когда идентификатор автогенерируется.
удалите это, и вставка должна работать с указанным пользователем идентификатором.
(это плохой дизайн, чтобы иметь свойство, отображаемое в поле первичного ключа)
Ответ 7
Здесь .perist() будет только вставлять запись. Если мы используем .merge(), он проверит, существует ли какая-либо запись с текущим идентификатором. Если она существует, она обновится, иначе она будет вставлять новую запись.
Ответ 8
У меня была эта проблема, и она была вызвана кешем второго уровня:
- Я сохранял объект, использующий hibernate
- Затем я удалил строку, созданную из отдельного процесса, который не взаимодействовал с кешем второго уровня
- Я сохранял другой объект с тем же идентификатором (мои значения идентификатора не сгенерированы автоматически)
Следовательно, поскольку кеш не был аннулирован, hibernate предположил, что он имеет дело с отдельным экземпляром того же объекта.
Ответ 9
Если вы установите id в своей базе данных как первичный ключ и автоинкремент, то эта строка кода неверна:
user.setId(1);
Попробуйте следующее:
public static void main(String[] args){
UserBean user = new UserBean();
user.setUserName("name1");
user.setPassword("passwd1");
em.persist(user);
}
Ответ 10
Другая причина ошибки в том, что объект объекта не реализует интерфейс Serializable
@Entity
@Table(name = OddInstance.objectName, uniqueConstraints = @UniqueConstraint(columnNames = {"alias"}))
@NamedQueries({
@NamedQuery(name=OddInstance.findByAlias,
query="from OddInstance where alias = :alias"),
@NamedQuery(name=OddInstance.findAll,
query="from OddInstance")
})
public class OddInstance implements Serializable {
// ...
}
