Ответ Майка У, представленный ниже, кажется самым легким. когда вы входите в intellij и редактируете свои доменные модели, кажется, что вы запутались, и приложение не скомпилируется, как ожидалось.
, так что если bootRun работает, но запуск приложения из IDE не выполняется, то, похоже, эта настройка возвращает мысли в устойчивое состояние.
Если вы вносите изменения в модели вашего домена, щелкните правой кнопкой мыши папку домена. затем нажмите «восстановить» по умолчанию примерно на полпути вниз по меню. Дождитесь завершения, затем снова запустите экземпляр приложения, щелкнув правой кнопкой мыши «RunApplication» в меню, и приложение должно успешно запуститься (или с отладкой) из среды IDE
Это самый простой ответ и лучший отзыв для разработчика с минимальными дополнительными действиями по восстановлению remmeber.
спасибо Майк В.
Для команды Grails с плагином intellij - это проблема в плагине?
Короткий ответ да, можно изменить значение различителя для конкретной строки (строк) с помощью собственного SQL.
Однако я не думаю, что NHibernate предназначается для прокладывания себе путь, так как различитель обычно "невидим" для уровня Java, где его значение, как предполагается, установлено первоначально согласно классу сохраненного объекта и никогда не изменяется.
Я рекомендую изучить более чистый подход. С точки зрения объектной модели Вы пытаетесь преобразовать суперобъект класса в один из его типов подкласса, не изменяя идентификационные данные его сохраненного экземпляра, и это - то, где конфликт (преобразованный объект, как действительно предполагается, не является тем же самым). Два альтернативных подхода:
или
Вот некоторые связанные обсуждения Быть в спящем режиме Форумов, которые могут представлять интерес:
Вы делаете что-то не так.
То, что Вы пытаетесь сделать, должно изменить тип объекта. Вы не можете сделать этого в.NET или в Java. Это просто не имеет смысла. Объект имеет точно один конкретный тип, и его конкретный тип не может быть изменен со времени, объект создается до времени объект уничтожается (черная магия, несмотря на это). Для выполнения то, что Вы пытаетесь сделать, но с иерархией классов Вы разметили, необходимо будет уничтожить клиентский объект, который Вы хотите превратиться в уровень один клиентский объект, создать новый уровень один клиентский объект и скопировать все соответствующие свойства от клиентского объекта до уровня один клиентский объект. Именно так Вы делаете это с объектами, на объектно-ориентированных языках, с Вашей иерархией классов.
Очевидно, иерархия классов, которую Вы имеете, не работает на Вас. Вы не уничтожаете клиентов в реальной жизни, когда они становятся уровнем клиенты! Не делайте этого с объектами также. Вместо этого придумайте иерархию классов, которая имеет смысл, учитывая сценарии, которые необходимо реализовать. Ваши сценарии использования включают:
Это означает необходимость в иерархии классов, которая может точно получить этот сценарий. Как подсказка, необходимо одобрить состав по наследованию. Это означает, это может быть лучшая идея назвать свойство IsTierOne
, или свойство называют DiscountStrategy
, и т.д., в зависимости от какой работы лучше всего.
Вся цель NHibernate (и В спящем режиме для Java) состоит в том, чтобы сделать базу данных невидимой. Позволить Вам работать с объектами исходно, с базой данных волшебно там негласно для создания объектов персистентными. NHibernate позволит Вам работать с базой данных исходно, но это не тип сценария, для которого создается NHibernate.
При выполнении его офлайн (например, в сценарии обновления DB), просто используйте SQL и гарантируйте непротиворечивость сами.
Если это будет чем-то, что Вы планируете, то произойдет в том, в то время как приложение работает, я думаю, что Ваши требования являются неправильными, точно так же, как хранение того же адреса указателя для другого объекта является неправильным.
Если Вы сохраняете идентификатор и используете его для доступа к клиенту снова (например, в URL) рассматривают создание нового поля, которое содержит маркер для этого, которое будет бизнес-ключом. Так как это не идентификатор, легко создать новый экземпляр объекта и копию по маркеру (необходимо будет, вероятно, удалить маркер из старого).