当前位置: 首页 > 面试题库 >

使用休眠工具进行延迟映射?

雷飞虎
2023-03-14
问题内容

我有两个表,A并且B在数据库中。在表中,B我有A一个Integer 对该表的引用idA。(idA是B的外键)当我使用hibernate-
tools进行反向工程时,会生成两个Java对象。

public class A{
  int id;
}

public class B{
  int id;
  A a;
}

但是我想要

public class B{
  int id;
  int idA;
}

我怎样才能做到这一点?

谢谢,


问题答案:

因此,我找到了一个解决方案:创建一个自定义ReverseEngineeringStrategy并将excludeForeignKeyAsManytoOne方法的返回更改为true

public class MyReverseEngineeringStrategy extends DelegatingReverseEngineeringStrategy {

    public MyReverseEngineeringStrategy(ReverseEngineeringStrategy delegate) {
        super(delegate);
    }

    @Override
    public boolean excludeForeignKeyAsManytoOne(String keyname, TableIdentifier fromTable, List fromColumns, TableIdentifier referencedTable, List referencedColumns) {
        return true;
                }

}


 类似资料:
  • 问题内容: 我在spring使用Hibernate。 我有这样的模型班。 它通常可以正常工作,但是Category不会延迟加载,而是在ForumEntry加载后急切加载。 `` 完全没有将getter称为ForumCategory是在ForumTopic之后立即加载的。 这个问题出现在我所有的@ManyToOne关联中。但是,@OneToMany关联会延迟加载。 我正在使用maven2进行构建。这

  • 问题内容: 我的多对一映射存在性能问题。当我在日志文件中调试SQL查询时,可以进行主体查询,但是在我有其他表示多对一对象映射的查询之后。 Entity.hbm.xml: Object1.hbm.xml: Object2.hbm.xml: 查询HBM: 在pom.xml中 问题答案: 您是否尝试过像这样的FetchMode.SELECT?

  • 延迟异步函数的执行。 延迟执行 async 函数的一部分,通过把它放到 sleep 状态,返回一个 Promise 。 const sleep = ms => new Promise(resolve => setTimeout(resolve, ms)); async function sleepyWork() { console.log("I'm going to sleep for 1

  • 问题内容: 我遇到了一个问题,JPA试图在我不想要的时候延迟加载我的数据。从本质上讲,正在发生的事情是我正在使用Service检索一些数据,并且当我将这些数据解析为JSON时,JSON库正在触发hibernate模式以尝试懒惰地加载数据。有什么办法可以阻止这种情况?我在下面给出一个例子。 是否可以将JPA /hibernate设置为不尝试并延迟加载数据? 更新: 我意识到您可以使用FetchTyp

  • 问题内容: 如何在Grails 3.0.1中使用注释映射域类? 以下步骤对我不起作用。 步骤1 。我使用Grails 3.0.1()创建了一个新应用程序。 第二步 。如“ 使用hibernate注释映射”中所述,我在(也尝试过)中创建了一个新类。 第三步 。然后通过向文件中添加相关条目,向Hibernate sessionFactory注册该类,如下所示: 第四步 。启动应用程序()后,“欢迎使用

  • 问题内容: 我正在针对域模型(由于某种原因)使用lazy =“ false”映射一对多关联的查询。在我的特定查询中,我宁愿延迟获取该集合,因为我不在乎其内容。如何为我的特定查询重新启用懒惰?这有可能吗? 到目前为止,我已经看过了,但是它仅仅是… 的不推荐使用的别名。 更改映射可能是理想的选择,但是我宁愿冒险影响现有查询。 编辑:我们使用Hibernate 3.3.2 问题答案: 我自己不是专家,但