当前位置: 首页 > 知识库问答 >
问题:

Hibernate字节码增强单向ManyToOne

施兴言
2023-03-14

我正在尝试将字节码增强功能添加到基于Java的Hibernate应用程序中。Hibernate是版本5.2.6.final,它内置在maven中,所以我使用的是hibernate-enhance-maven-plugin。我已经测试了以下直到5.2.18.final的问题,但结果是相同的。

“enableAssociationManagement”选项给了我几个问题,应用程序无法增强。我的问题是,我有几个单向的ManyToOne映射,在这些映射中,我只需要从子类访问父类。我从不需要对父实体中的子实体进行引用。

我有一个典型的映射如下所示:

public class Child implements Serializable {
    private Parent parent;
    @ManyToOne
    @JoinColumn(name="FK_PARENT", referencedColumnName="ID", nullable=true)
    public Parent getParent() { return this.parent; }
    public void setParent(Parent parent) { this.parent = parent; }
}

public class Parent implements Serializable {
    //No variable/getter/setter for a collection of the children, as they are not needed here.
}
INFO: Enhancing [com.mycom.model.Child] as Entity
Aug 08, 2019 3:31:09 PM org.hibernate.bytecode.enhance.internal.javassist.PersistentAttributesEnhancer handleBiDirectionalAssociation
INFO: Could not find bi-directional association for field [com.mycom.model.Child#parent]
public class Child implements Serializable {
    private Parent parent;
    @ManyToOne
    @JoinColumn(name="FK_PARENT", referencedColumnName="ID", nullable=true)
    public Parent getParent() { return this.parent; }
    public void setParent(Parent parent) { this.parent = parent; }
}

public class Parent implements Serializable {
    private Set<Child> children;
    @OneToMany(mappedBy="parent")
    public Set<Child>getChildren() { return this.children; }
    public void setChildren(Set<Child>parent) { this.children = children; }
}

有没有更好的方法来注释我的两个模型实体?还是有一个注释/选项我没有,它将向字节码增强表明ManyToOne关系完全是单向的,而不是双向的?

共有1个答案

曹凯泽
2023-03-14

这只是一个信息级别的警告。

enableAssociationManagement确定“是否应该进行双向关联管理的增强”。因为它是单向的,所以没有工作要做。

当指定failOnError时,这不会停止生成。

 类似资料:
  • 问题内容: Hibernate Gradle插件等效于Hibernate Gradle,并提供了构建时代码增强功能。在官方的文档不提线。如果我按照指南的指示去做,我会得到: 找不到方法hibernate()作为参数… 我尝试用(如该线程所示)和(如该测试所示)猜测插件名称,但这只是说具有该ID的插件是未知的。 是否有人成功设置了此插件? 我的build.gradle如下: 与移动尝试到根,和没有有

  • 是否有可能使用JPA接口(实体图)急切地加载@*ToOne属性,这些接口使用父实体类中的@LazyToOne、@LazyGroup设置为懒惰,并启用了字节码增强?我正试图急切地使用实体图加载此类属性,但当查询父实体时,它会触发对此类@*ToOne属性的另一个查询。 试图用另一种方法覆盖实体类中的静态获取类型,包括@LazyToOne,它添加了字节码增强功能。 使用Spring 5.1.3、Spri

  • 我使用下面的链接作为参考来实现从PostgreSQL DB懒惰加载图像: URL 在我的用户实体中,我声明字节数组字段: 在pom.xml文件我包括hiberante增强插件: 问题是,当我从数据库中获取用户实体时,也会加载化身字节数组,这是我不想要的。 我知道hibernate enhance maven插件应该增强/改变用户。类文件,这没有发生。 我错过什么了吗? 更新: 我执行增强目标: 组

  • 问题内容: 我正在使用Hibernate 4.3.6,并且使用了最新的Maven字节码增强功能来检测所有实体是否具有自我污染意识。 我添加了Maven插件: 而且我看到我的实体得到了增强: 调试时,我正在检查方法: 并且始终返回 false 。 这是因为始终为null,因此在设置任何属性时: 由于为null,将绕过trackChange,因此字节码增强功能将无法解析脏属性,并且将使用默认的深度比较

  • 问题内容: 我正在使用Hibernate 4.2并构建时间字节码工具来解决出现在关系上的懒惰问题和(https://developer.jboss.org/wiki/SomeExplanationsOnLazyLoadingone- to-one ) 您知道之间有什么区别吗? Hibernate字节码检测工具:http : //docs.jboss.org/hibernate/orm/4.3/ma

  • 问题内容: 我正在使用Hibernate 4.3.6,并且使用了最新的Maven字节码增强功能来检测所有实体是否具有自我污染意识。 我添加了Maven插件: 而且我看到我的实体得到了增强: 调试时,我正在检查方法: 并且始终返回 false 。 这是因为始终为null,因此在设置任何属性时: 因为为null,将绕过trackChange,因此字节码增强功能将无法解决脏属性,并且将使用默认的深度比较