Возможно, вам потребуется указать таблицу EXCLUDED
в вашем операторе set.
SET channels = array_append(EXCLUDED.channels, 'a159d680-2f2e-4ba7-9498-484271ad0834')
При использовании предложения ON CONFLICT DO UPDATE
значения, которые не вставлены из-за конфликта, сохраняются в таблице EXCLUDED
. Это эфемерная таблица, которую вы фактически не должны составлять, способ NEW
и OLD
в триггерах.
конфликта_акция определяет альтернативное действие ON CONFLICT. Это может быть либо DO NOTHING, либо предложение DO UPDATE, определяющее точные детали действия UPDATE, которое должно быть выполнено в случае конфликта. Предложения SET и WHERE в ON CONFLICT DO UPDATE имеют доступ к существующей строке, используя имя таблицы (или псевдоним), и к строкам, предложенным для вставки, используя специальную исключенную таблицу. Привилегия SELECT требуется для любого столбца в целевой таблице, где читаются соответствующие исключенные столбцы.
Обратите внимание, что эффекты всех триггеров BEFORE INSERT для каждой строки отражаются в исключенных значениях, поскольку эти эффекты могли способствовать исключению строки из вставки.
BLOCKQUOTE>
Если другой конец ассоциации может быть пустым, я верю, в спящем режиме, должен запросить для конца ассоциации, чтобы определить, должно ли это использовать прокси или не (никакая потребность в прокси, если другой конец является пустым). Я не могу найти ссылку на это прямо сейчас, но я не забываю читать ее где-нибудь.
Для обеспечения ленивой загрузки полей, документация относится к улучшениям байт-кода на полях в buildtime: Используя ленивую выборку свойства. Вот выборка:
Hibernate3 поддерживает ленивую выборку отдельных свойств. Этот метод оптимизации также известен как группы выборки. Обратите внимание на то, что это - главным образом маркетинговая функция, поскольку на практике, оптимизация чтений строки намного более важна, чем оптимизация чтений столбца. Однако только загрузка некоторых свойств класса могла бы быть полезной в крайних случаях, когда таблицы прежней версии имеют сотни столбцов, и модель данных не может быть улучшена.
Ленивая загрузка свойства требует buildtime инструментария байт-кода! Если Ваши персистентные классы не будут улучшены, Будут в спящем режиме, то тихо проигнорирует ленивые настройки свойства и отступит к непосредственной выборке.
При передаче быть в спящем режиме объекта от модели до представления через контроллер не делайте!
Вместо этого сделайте "объект снимка" для хранения значений от Быть в спящем режиме объекта, который Вы хотите передать представлению и быть отображенными.
Почему? Прокси может все еще получить значения, когда это находится в контроллере..., но когда Вы передаете прокси/объект представлению, это больше не может получать значения, потому что транзакция уже закончилась. И это - то, почему я предложил то, что я имею выше.
Когда использование В спящем режиме аннотации, помещая @ManyToOne (выборка = FetchType. ЛЕНИВЫЙ) на ассоциации, выполняет то, что Вы хотите. Вы попытались установить выборку = "ленивый", чтобы видеть, работает ли это?
@Miguel Ping:
Я думаю, что страница, на которую вы ссылаетесь, это [ http://www.hibernate.org/162.html] . Насколько я понимаю, дополнительный SELECT необходим в случае взаимно-однозначной стороны, где внешний ключ отсутствует. Установка constrained = "true"
сообщает Hibernate, что другая сторона всегда присутствует и никакого дополнительного SELECT не требуется.
Так что для стороны "многие к одному", где находится внешний ключ, она не должна не нужно
выполнить другой SELECT, так как значение FK сообщает, присутствует ли другой конец или пусто
. По крайней мере, так я это понимаю.
Пока что по теории. У меня прокси работает на стороне внешнего ключа / многие-к-одному. Используемое сопоставление для ассоциации:
<столбцы многих имен = "haendler" column = "VERK_HAENDLOID" lazy = "proxy" />
Но прокси-сервер не работает для меня в одноразовых одна сторона использует сопоставление, подобное описанному по данному URL ( constrained = "true"
). Хм, думаю, я открою вопрос для этого. ; -)
Я обнаружил, что lazy = no-proxy , но в документации говорится о каком-то модификация байт-кода и не идет в любые подробности. Кто-нибудь может мне помочь out?
Я предполагаю, что вы используете ANT для сборки своего проекта.
<property name="src" value="/your/src/directory"/><!-- path of the source files -->
<property name="libs" value="/your/libs/directory"/><!-- path of your libraries -->
<property name="destination" value="/your/build/directory"/><!-- path of your build directory -->
<fileset id="applibs" dir="${libs}">
<include name="hibernate3.jar" />
<!-- include any other libraries you'll need here -->
</fileset>
<target name="compile">
<javac srcdir="${src}" destdir="${destination}" debug="yes">
<classpath>
<fileset refid="applibs"/>
</classpath>
</javac>
</target>
<target name="instrument" depends="compile">
<taskdef name="instrument" classname="org.hibernate.tool.instrument.javassist.InstrumentTask">
<classpath>
<fileset refid="applibs"/>
</classpath>
</taskdef>
<instrument verbose="true">
<fileset dir="${destination}">
<!-- substitute the package where you keep your domain objs -->
<include name="/com/mycompany/domainobjects/*.class"/>
</fileset>
</instrument>
</target>