annotations - 从另一个命名查询中调用 HQL 命名查询?

标签 annotations hql

是否可以从另一个命名查询中调用一个命名查询?如果是这样,请在您的答案中举一个简单的例子。

上下文:

我有一个子查询,它将在其他一些查询中重复,并且不想造成维护噩梦。

@NamedQuery(name = "Album.getSong", query = "SELECT song_name FROM Album" +
"WHERE album_name = ‘And Justice for All’" +
"AND band_name = ‘Metallica’" +
"AND song_name NOT IN" +
"(SELECT song_name FROM Lyric" +
"WHERE song_lyric LIKE ‘%justice%’)")

除了我将重用

SELECT song_name FROM Lyric
WHERE song_lyric LIKE ‘%justice%’

在许多命名查询中。

最佳答案

我认为您不能在命名查询中重复使用命名查询,您的 ORM 供应商中可能有一些可用的东西可以使这成为可能。不过,您可以在命名查询中引用静态字符串以供重复使用。

@NamedQuery(name = "SELECT song_name FROM Album" +
"WHERE album_name = ‘And Justice for All’" +
"AND band_name = ‘Metallica’" +
"AND song_name NOT IN" + ExampleClass.QUERY)

关于annotations - 从另一个命名查询中调用 HQL 命名查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6447457/

相关文章:

java - 从 AnnotationProcessor 读取字节码

java - 如何解析泛型类型中的Java注解?

java - 使用 NamedQuery 更新 hibernate 中的查询

java - 带有参数 NoSuchMethodError 的 HQL

java - 如何从实现类方法获取Java自定义注释

java - 使用注释将所有返回的元素放入 Spring-Boot 缓存中

java - 将动态参数传递给注释?

nhibernate - NHibernate 中总行数的分页

Hibernate aliasToBean不会将字符串转换为Enum

mysql - 连接表并找到最小值/最大值(集合)