java—jpa本机命名查询的用途

4si2a6ki  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(268)

这个问题在这里已经有答案了

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);
}

这两种方法有什么区别吗?

eyh26e7m

eyh26e7m1#

你的情况没有什么不同。
但是 @NamedNativeQuery 可以为Map本机查询的结果集提供更大的灵活性。请看hibernate文档。你可以用 NamedNativeQueryConstructorResult 或用于Map联接实体结果集。
作为一个额外的例子,请看这个。

相关问题