- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 JPA 2.1 项目,数据库有 2 个表。我创建了一个接口(interface)“UsedClasses.java”,并让两个实体都实现了该接口(interface)。,即
@Entity
@Table(name = "runRanges")
@NamedQuery(name = "RunRange.findAll", query = "SELECT r FROM RunRange r")
public class RunRange extends AbstractTimestampEntity implements UsedClasses, Serializable ....
和
@Entity
@Table(name = "users")
@NamedQuery(name = "User.findAll", query = "SELECT u FROM User u")
public class User extends AbstractTimestampEntity implements UsedClasses, Serializable ...
我很想知道是否可以使用该界面来获取任一实体的 NamedQuery。如果根据类(class)获取结果列表,我想要完成什么。
public List<UsedClasses> getAllItems() {
open();
Query query = EntityManagerHandler.INSTANCE.getEntityManager().createQuery(UsedClasses.class.getResource(NamedQueries));
List<UsedClasses> aList = query.getResultList();
return aList;
}
最佳答案
您可以做到这一点,但您应该使用反射来检索 NamedQuery
注释,并且您需要拥有 UsedClasses
实例,而不是像示例中那样的接口(interface):
Query query = EntityManagerHandler.INSTANCE.getEntityManager().createQuery(UsedClasses.class.getResource(NamedQueries));
此外,如果添加多个注释,则不再起作用。
我认为一个更简单和干净的解决方案是在界面中添加一个方法来获取namedQuery String名称。
例如
public interface UsedClasses(){
String getNamedQueryForGetAll();
}
你可以这样实现它:
@Entity
@Table(name = "users")
@NamedQuery(name = "User.findAll", query = "SELECT u FROM User u")
public class User implements UsedClasses(){
public String getNamedQueryForGetAll(){
return "User.findAll";
}
}
然后你可以这样使用它:
Query query = EntityManagerHandler.INSTANCE.getEntityManager().createQuery(usedClassInstance.getNamedQueryForGetAll());
现在,我发现它产生了一些重复,而且不可读。NamedQuery
带来了极其微小的性能提升。
我不确定代码中引入的复杂性/间接级别是否能在执行时间方面获得如此少的时间,从而使您获胜。
关于java - 从 JPA 实体的接口(interface)检索 @NamedQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43643892/
是否可以从另一个命名查询中调用命名查询?如果是这样,请在您的答案中举一个简单的例子。 上下文: 我有一个子查询,它将在其他一些查询中重复,并且不想成为维护噩梦。 @NamedQuery(name =
在我看来,定义 static namedQueries = {} 在层次结构的子类中完全屏蔽了父类(super class)的 namedQueries 声明。有没有办法让两者都工作?说使用 supe
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭10 年前。 Improv
假设我有以下 2 个类(class): @Entity class Article { @Id int id; @ManyToMany(mappedBy="articles")
再次,基于 a problem I had the other day 为他人的利益发布并回答问题。希望这可以节省一些人的时间。我有点惊讶这没有内置到 JPA 的 EntityManager 中。 如
我已经从数据库生成了一个实体类,并且在 @NamedQueries 注释中创建了一些可用的“默认”查询。因此,当我必须创建新的 sql 查询时,我只需编写 @NamedQuery 并使用名称和新的 s
我是 JSP/EL/EJB 世界的新手,所以请仔细考虑...呵呵 我的问题是 PREVIOUS Q? 的延续 所以在上面问题的评论/答案中建议使用customerFacade.findByUserNa
我在实体中创建了简单的@NamedQuery: @NamedQueries({ @NamedQuery(name = ProductChangeLog.GetByDate, query
我有这样的查询: SELECT * FROM MyTable mt WHERE mt.firstCondition = :var1 AND mt.secondCondition = :var2 var
我想定义一些命名查询,例如: @Entity @Table(name = "TableA") @NamedQuery(query = "SELECT i FROM TableA i WHERE i.I
我尝试执行此查询,但它仍然选择每个 child ,即使我只想要具有特定名称的 child 。我该如何实现这一目标? @NamedQuery(name="Parent.getChildrenWithNa
大家好,我在执行 NamedQuery 时遇到了一些精确匹配的问题。 我目前正在使用这样的东西: @NamedQuery(name = MyClass.GET_ENTRY_BY_NAME, query
我正在使用常量来组织我的@NamedQueries,但我对参数有疑问,是否也将常量用作参数是一种好习惯? 例如,在整个应用程序中,我的 NamedQueries 按公司 ID 筛选。所以我创建了: p
我有 20 个继承自 AbstractEntity 的类,它们都需要具有相同的 NamedQueries,作为示例,我们举一个简单的例子: @NamedQuery(name = Bootle.FIND
我正在使用 JPQL 和 NamedQuery 在组合问题中查询数据库。 @NamedQuery(name = "Entry.findAllForName", query = "Select p Fr
我是 Hibernate 的新手,我遇到以下情况,我不知道如何处理。 所以我有这两个实体类: KMCountryArea 在我的数据库上映射 KM_COUNTRY_AREA 表: @NamedQuer
我有一个小型 Grails 应用程序。我决定制作一个 Multi-Tenancy 架构。我在 DataSource.groovy 中定义了几个数据源。 问题是我在我的域模型类中定义了几个命名查询。 尝
我正在使用带有 Hibernate 的 Java 1.7。 我有下表: CREATE TABLE public.approvalautoselectionconfig ( id bigint
我在使用 hibernate @NamedQueries 时遇到问题。我有一个表 SCP_PMAT,其中列名为“group”。在映射中没有问题。我用括号解决了这个问题。 public class Sc
晚上好!我正在尝试将查询中的值设置为包装类 TestWrapper TestWrapper 类: package com.bionic.wrappers; public class TestWrapp
我是一名优秀的程序员,十分优秀!