我有很多EntityManager
,每个模式都有一个(我使用entity-mappings
文件将EM与模式映射)。有用。
当我使用@NamedQuery
时,它就像是一种魅力,但是当我使用@NamedNativeQuery
时,则不使用模式。我必须符合SELECT foo FROM schema.table
的条件。
这是正确的行为吗?
我认为不可能通过参数@NamedNativeQuery
动态传递模式(我相信只有列可以是动态的,而不能是表或模式或其他任何东西),那么如何在动态模式中使用@NamedNativeQuery
呢?
最佳答案
文档摘录:
NamedNativeQuery:指定一个命名的本机SQL查询。查询名称的作用域是持久性单元。
NamedQuery:使用Java Persistence查询语言指定静态的命名查询。查询名称的作用域是持久性单元。
没有直接指定NamedNativeQuery
是静态的,但是两者的作用域相同,并且以后不能更改,这是期望的行为。
命名查询意味着可以由多个模块访问-应用程序范围内,由唯一名称标识,因此它们是静态且恒定的。您可以尝试动态构建查询字符串,也可以从中创建本地查询,而不是命名本地查询。