这个问题在这里已经有答案了:
jpa中namedquery注解的好处是什么(1个答案)
查询、本机查询、命名查询和类型化查询之间的差异[已关闭](1个答案)
24天前关门。
我想知道在jpa中使用本机命名查询的目的是什么。让我们举个例子:
包含本机查询的实用程序类:
class ExampleNativeQueries {
static final String NATIVE_QUERY = "select * from EXAMPLE_TABLE where EXAMPLE_VALUE = :value";
}
实体类+存储库:
@Entity
@Table(name = "EXAMPLE_TABLE")
public class Example {
@Id
private Long id;
@Column(name = "EXAMPLE_VALUE")
private String value;
}
interface ExampleRepository extends JpaRepository<Example, Long> {
@Query(value = ExampleNativeQueries.NATIVE_QUERY, nativeQuery = true)
List<Example> findByExampleValue(@Param("value") String value);
}
与
@Entity
@Table(name = "EXAMPLE_TABLE")
@NamedNativeQuery(name = "Example.findByExampleValue", query = ExampleNativeQueries.NATIVE_QUERY, resultClass = Example.class)
public class Example {
@Id
private Long id;
@Column(name = "EXAMPLE_VALUE")
private String value;
}
interface ExampleRepository extends JpaRepository<Example, Long> {
@Query(nativeQuery = true)
List<Example> findByExampleValue(@Param("value") String value);
}
这两种方法有什么区别吗?
1条答案
按热度按时间eyh26e7m1#
你的情况没有什么不同。
但是
@NamedNativeQuery
可以为Map本机查询的结果集提供更大的灵活性。请看hibernate文档。你可以用NamedNativeQuery
与ConstructorResult
或用于Map联接实体结果集。作为一个额外的例子,请看这个。