运行 同一实体上的两个 @NamedNativeQuery 查询 Class
Run two @NamedNativeQuery query on same entity Class
我想在实体 class 上定义两个 @NamedNativequery。绑定定义eclipse时报错。
Duplicate annotation of non-repeatable type @NamedNativeQuery. Only
annotation types marked @Repeatable can be used multiple times at one
target.
从那个错误中,我知道我们不能定义实体的两个定义两个@NamedNativeQuery class like
@Entity
@Table(name = "abc")
@NamedNativeQuery(name = "ABC.getSomeMethod1" query = "some_query",resultSetMapping ="abcDTO")//1st name query
// @NamedNativeQuery(name = "some_name" query = "some_query",resultSetMapping ="some_dto")//try to define second query , but gives error
public class ABC {
}
我在 dao 层使用 spring 存储库来调用与此查询绑定的方法
public interface SomeInterface extends JpaRepository<ABC, Long> {
@Query(nativeQuery =true)
List<ABCDTO> getSomeMethod1(@Param("someParam1") long someParam1, @Param("someParam2") String someParam2);
}
我想运行第一个原生sql(运行很好)查询然后运行第二个原生sql查询(想要 运行 这也来自同一个)。如何解决这个问题或可能的解决方案是什么。
如果我无法通过这种方式 运行 两个本机 sql 查询,那么是否还有其他方法可以实现此目的。
您可以像这样定义多个命名查询
@NamedNativeQueries({
@NamedNativeQuery(name = "ABC.getSomeMethod1"
query = "some_query",resultSetMapping ="abcDTO"
),
@NamedNativeQuery(name = "some_name"
query = "some_query",resultSetMapping ="some_dto"
)
})
那么在事务下的业务层就可以依次调用这两个查询了,
如果它是两个实体之间的简单连接并且 select 并且显示更好,请使用连接。永远记得在 Table ;)
中设置这些列的索引
我想在实体 class 上定义两个 @NamedNativequery。绑定定义eclipse时报错。
Duplicate annotation of non-repeatable type @NamedNativeQuery. Only annotation types marked @Repeatable can be used multiple times at one target.
从那个错误中,我知道我们不能定义实体的两个定义两个@NamedNativeQuery class like
@Entity
@Table(name = "abc")
@NamedNativeQuery(name = "ABC.getSomeMethod1" query = "some_query",resultSetMapping ="abcDTO")//1st name query
// @NamedNativeQuery(name = "some_name" query = "some_query",resultSetMapping ="some_dto")//try to define second query , but gives error
public class ABC {
}
我在 dao 层使用 spring 存储库来调用与此查询绑定的方法
public interface SomeInterface extends JpaRepository<ABC, Long> {
@Query(nativeQuery =true)
List<ABCDTO> getSomeMethod1(@Param("someParam1") long someParam1, @Param("someParam2") String someParam2);
}
我想运行第一个原生sql(运行很好)查询然后运行第二个原生sql查询(想要 运行 这也来自同一个)。如何解决这个问题或可能的解决方案是什么。
如果我无法通过这种方式 运行 两个本机 sql 查询,那么是否还有其他方法可以实现此目的。
您可以像这样定义多个命名查询
@NamedNativeQueries({
@NamedNativeQuery(name = "ABC.getSomeMethod1"
query = "some_query",resultSetMapping ="abcDTO"
),
@NamedNativeQuery(name = "some_name"
query = "some_query",resultSetMapping ="some_dto"
)
})
那么在事务下的业务层就可以依次调用这两个查询了,
如果它是两个实体之间的简单连接并且 select 并且显示更好,请使用连接。永远记得在 Table ;)
中设置这些列的索引