使用JPA时,可以使用JPQL或" native SQL"写查询:
JPQL示例:
interface TodoRepository extends Repository<Todo, Long> {
@Query("SELECT t FROM Todo t WHERE t.title = 'title'")
public List<Todo> findByTitle();
}
SQL示例:
interface TodoRepository extends Repository<Todo, Long> {
@Query(value = "SELECT * FROM todos t WHERE t.title = 'title'",
nativeQuery=true)
public List<Todo> findByTitle();
}
JPQL显然独立于底层数据库(Oracle,MySQL等) 我的问题是:SQL是否也独立于底层数据库?也就是说,这个SQL是某种形式的&#34;中性&#34; SQL然后被翻译成特定的SQL方言(如MySQL方言)?
答案 0 :(得分:0)
JPA“本机查询”是SQL。 SQL从一个RDBMS到另一个不同。使用“本机查询”时,您完全依赖于数据库。所以你应该尽可能地努力使用JPQL。
没有供应商中立形式。显然,如果所有RDBMS供应商坚持计划ANSI SQL并支持相同的语法,那么一切都会很简单,但它们不会,而且它不是