从另一个namedQuery中调用一个名为Query的HQL?

时间:2011-06-22 22:46:34

标签: 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%’

在许多命名查询中。

1 个答案:

答案 0 :(得分:3)

我认为您不能在命名查询中重用命名查询,您的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)