Улучшение байт-кода не работает - PullRequest
0 голосов
/ 28 мая 2018

Я использую приведенную ниже ссылку в качестве ссылки для реализации отложенной загрузки изображения из БД PostgreSQL: URL

В своей сущности User я объявил поле массива байтов:

@Lob
@Basic(fetch = FetchType.LAZY)
private byte[] avatar;

В файле pom.xml я включил плагин улучшения hiberante:

<plugin>
<groupId>org.hibernate.orm.tooling</groupId>
<artifactId>hibernate-enhance-maven-plugin</artifactId>
<version>${hibernate.version}</version>
<executions>
    <execution>
        <configuration>
            <failOnError>true</failOnError>
            <enableLazyInitialization>true</enableLazyInitialization>
        </configuration>
        <goals>
            <goal>enhance</goal>
        </goals>
    </execution>
</executions>

Проблема в том, что когда я выбираю сущность User из БД, также загружается байтовый массив аватаров,чего я не хочу.

Я понимаю, что hibernate-gain-maven-plugin должен улучшать / изменять файл User.class, этого не произошло.

Я что-то здесь упускаю?

ОБНОВЛЕНИЕ:

Я выполняю цель улучшения:org.hibernate.orm.tooling: гибернации-повышения-Maven-плагин: повыситьВ утешении я получил сообщение:«Пропуск выполнения плагина улучшения байт-кода Hibernate, поскольку ни одна функция не включена»Я проверил файл jar плагина hibernate-Improve-Maven-Plugin-5.3.1.Final.jar и я вижу ниже код:

@Mojo(name="enhance", defaultPhase=LifecyclePhase.COMPILE, 
requiresDependencyResolution=ResolutionScope.COMPILE_PLUS_RUNTIME)
public class MavenEnhancePlugin
extends AbstractMojo
{
private List<File> sourceSet = new ArrayList();
@Component
private BuildContext buildContext;
@Parameter(property="base", defaultValue="${project.build.outputDirectory}")
private String base;
@Parameter(property="dir", defaultValue="${project.build.outputDirectory}")
private String dir;
@Parameter(property="failOnError", defaultValue="true")
private boolean failOnError = true;
@Parameter(property="enableLazyInitialization", defaultValue="false")
private boolean enableLazyInitialization;
@Parameter(property="enableDirtyTracking", defaultValue="false")
private boolean enableDirtyTracking;
@Parameter(property="enableAssociationManagement", defaultValue="false")
private boolean enableAssociationManagement;
@Parameter(property="enableExtendedEnhancement", defaultValue="false")
private boolean enableExtendedEnhancement;

private boolean shouldApply()
{
    return (this.enableLazyInitialization) || (this.enableDirtyTracking) || 
    (this.enableAssociationManagement) || (this.enableExtendedEnhancement);
}

public void execute()
throws MojoExecutionException, MojoFailureException
{
if (!shouldApply())
{
  getLog().warn("Skipping Hibernate bytecode enhancement plugin execution since no feature is enabled");
  return;
}
.
.
.
}

Похоже, что метод shouldApply () возвращает false, не знаю почему, так как я установилсвойства (enableLazyInitialization) в pom-файле имеют значение true.

1 Ответ

0 голосов
/ 26 июня 2018

Если вы не собираетесь использовать плагин для участия в некоторых этапах жизненного цикла сборки, вам не следует использовать выполнения.Попробуйте эту конфигурацию в вашем pom.xml:

        <plugin>
            <groupId>org.hibernate.orm.tooling</groupId>
            <artifactId>hibernate-enhance-maven-plugin</artifactId>
            <version>5.2.13.Final</version>
            <configuration>
                <failOnError>true</failOnError>
                <enableLazyInitialization>true</enableLazyInitialization>
                <enableDirtyTracking>false</enableDirtyTracking>
                <enableAssociationManagement>false</enableAssociationManagement>
            </configuration>
            <goals>
                <goal>enhance</goal>
            </goals>
        </plugin>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...