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

从QueryDSL中的自定义表中选择

湛财
2023-03-14

我正在JBoss上使用QueryDSL-JPA,希望在某一点上从一个不同的表中选择一个实体,而不是我通常使用并通过@table进行注释的表。我不想创建一个单独的Java类,因为最终,它应该返回给我与我正在使用的相同的类。

共有1个答案

羊舌勇
2023-03-14

我能看到的最好的方法是通过JPA中的自定义SQL。QueryDSL不允许执行以下操作:

   final AbstractEntityPersister persister = getEntityPersister();
   final String[] idColumnNames = persister.getIdentifierColumnNames();
   Validate.isTrue(idColumnNames.length == 1);

   final String sql = "select * from " + getEntityPersister().getTableName() + HIST_TABLE_SUFFIX + " where " + idColumnNames[0] + " = ?";
   @SuppressWarnings("unchecked")
   final List<E> histList = em.createNativeQuery(sql, getEntityClass()).setParameter(1, id).getResultList();

使用

@PersistenceContext(name = "MyDS")
protected EntityManager em;

protected AbstractEntityPersister getEntityPersister() {
    final MetamodelImplementor mm = (MetamodelImplementor) em.getEntityManagerFactory().getMetamodel();
    return (AbstractEntityPersister) mm.entityPersister(getEntityClass());
}
 类似资料:
  • SQL可能如下所示: 如何将said SQL转换为querydsl? 编辑:因为它受到混淆:是的,这个例子是愚蠢的。不,我不想“优化”SQL。我所需要的只是一些生成完全相同(愚蠢的)SQL的QueryDSL代码。或者任何其他查询DSL代码生成任何类型的。如果可能的话。

  • 问题内容: 目前,我正在尝试向我们在Salesforce内部使用的自定义选择列表中添加值。目前,经过数天的尝试,我无法创建新的自定义选择列表,如下所示: 现在,我尝试使用xml更新现有选择列表中的值。但是,当我尝试用更新标记替换create标记时,它告诉我在该位置无效的标记如“ fullName”,“ label”等。 任何帮助将非常感激! 问题答案: 经过数天的尝试,我终于找到了一种更新Sale

  • 在自定义arrayAdapter中实现自定义getFilter时遇到问题。实际上,我不知道如何实现它。尝试了各种代码,但仍然没有成功。这是我的自定义阵列适配器。 这是ListTO课程。 这是布局图。 这里的搜索关键字来自“inputSearch”编辑文本。 这是文本更改的侦听器。 谢谢

  • 问题内容: 理想情况下,我需要一个等于 但这是非法的。 我不能使用自动递增的字段。 row_number()是需要选择的行。 我该怎么办? 编辑:嗯,我使用iSql * plus进行练习,出于某些原因,使用limit和auto_increment是非法的。我最终创建了一个序列和一个触发器,并且每次输入一个条目时,ID都增加了1。 问题答案: 您可以使用代替。 如文档所述, 第一个参数指定要返回的第

  • 我假设我可以做这样的事情,但这样会处理乐观锁情况吗(我通过表上的版本列使用它)

  • 问题内容: jenkins管道插件可以从自定义位置选择jenkinsfile并开始构建吗? 我不想将jenkinsfile保留在源代码中。如果源代码有任何更改。应从自定义位置选择jenkinsfile并开始构建。 示例:/ home / test / jenkinsfile 问题答案: 当然,只要用户有权读取该位置,就可以尝试放置自定义位置(我不知道为什么不能这样做)。 如果是多分支管道,则为no