相关疑难解决方法(0)

如何生成JPA 2.0元模型?

本着与CriteriaQuery相关的类型安全的精神,JPA 2.0还有一个API来支持实体的Metamodel表示.

是否有人知道这个API的全功能实现(生成Metamodel而不是手动创建元模型类)?如果有人也知道在Eclipse中设置它的步骤,那将是非常棒的(我假设它就像设置注释处理器一样简单,但你永远不知道).

编辑:偶然发现了Hibernate JPA 2 Metamodel Generator.但问题仍然存在,因为我找不到jar的任何下载链接.

编辑2:少顷已经过去了,因为我问过这个问题,但我想我会回来,并添加一个链接到SourceForge上的Hibernate JPA模型生成项目

java jpa annotation-processing metamodel jpa-2.0

89
推荐指数
6
解决办法
10万
查看次数

JPA Query处理NULL参数值

我是JPA的新手,这是我的一个查询,我有几个参数作为查询的一部分,任何参数都可以是null值

@Query(value = "SELECT ord.purchaseOrderNumber,ord.salesOrderNumber,ord.quoteNumber"

            + " FROM Order ord WHERE ord.purchaseOrderNumber LIKE :poNumber%  "
            + " AND ord.salesOrderNumber LIKE :soNumber "
            + " AND ord.quoteNumber = :quoteNumber "
Run Code Online (Sandbox Code Playgroud)

上面的示例如果我的输入参数:quoteNumber为NULL则我不应该通过ord.quoteNumber = NULL进行过滤,那么如何避免这种情况

jpa

6
推荐指数
2
解决办法
1万
查看次数

如何在 Spring Data JPA 中编写动态本机 SQL 查询?

我需要在 Spring Boot Web 应用程序中对数据库中的多个表编写搜索查询。

它使用弹簧数据 jpa。我知道我们可以使用 @Query 注释和 native = true 标志在 spring 数据 jpa 中编写本机查询。

有什么方法可以在存储库类中编写查询而不是 @Query 注释,因为查询非常复杂和动态。

hibernate spring-data-jpa

6
推荐指数
1
解决办法
1万
查看次数

将整个 where 子句传递给本机 spring jpa @Query

目前,在我的 spring @Query 中创建本机 SQL 时,我无法知道 SQL where 子句中的字段(认为是临时的)。因此我传递了整个 where 子句。

如果我将 SQL 输出到控制台并将其粘贴到我的 SQL 编辑器中,我就能够收到有效的结果集。

SELECT * FROM lorder WHERE order_id = 1196077
Run Code Online (Sandbox Code Playgroud)

控制台的最后一个 SQL 输出是:Hibernate:

/* dynamic native SQL query */ SELECT
    * 
FROM
    lorder 
WHERE
    ?
and the where clause value being passed in to the @query is:
order_id = 1196077
Run Code Online (Sandbox Code Playgroud)

这就是我目前正在做的事情,但不起作用。

@Query(
    value = "SELECT * FROM lorder WHERE :where",
    nativeQuery = true)
List<OrderEntity> listSelected(@Param("where") String where);  
Run Code Online (Sandbox Code Playgroud)

不确定是否可以传递整个 where 子句,但我期待一个列表。然而我目前得到的是一个空的集合。

java spring-data-jpa

4
推荐指数
1
解决办法
1万
查看次数

使用 JpaRepository 进行动态查询

我正在尝试使用 JpaRepository 获取查询结果,但它对我不起作用:

public interface PeticionRepository extends JpaRepository<Peticion, Long> {

    @Query(value = "select peticion from Peticion peticion where (peticion.codigo like CONCAT(?1, '%') or "
        + "peticion.contacto.direccionGeneral.nombre like CONCAT(?1, '%') or peticion.contacto.poa like CONCAT(?1, '%') or "
        + "peticion.proyecto.nombre like CONCAT (?1, '%') or peticion.datosAdicionales.estado.nombre like CONCAT(?1, '%'))")
    List<Peticion> findByText(String texto);

    List<Peticion> findByFilter(String unidad, String nombreIniciativa, String codigo,
        LocalDate fechaConsejeroDFormat, LocalDate fechaConsejeroHFormat);
}
Run Code Online (Sandbox Code Playgroud)

在其他课程中,我需要覆盖findByFilter要创建查询的函数:

public abstract class JpaPeticionRepository implements PeticionRepository {

    @PersistenceContext(name = "ExterroPU") 
    private EntityManager em; 

    public void …
Run Code Online (Sandbox Code Playgroud)

java spring jpql spring-data-jpa spring-repositories

3
推荐指数
1
解决办法
1万
查看次数

如何在@Query批注中使用参数的方法

是否可以在@Query批注内调用参数的方法?

例:

@Query("SELECT user " +
    "FROM User user " +
    "WHERE (?1.getFilter() = '*' OR user.name = ?1)");
List<User> getUsers(UserNameFilter userNameFilter);
Run Code Online (Sandbox Code Playgroud)

我知道我可以做这样的事情:

@Query("SELECT user " +
    "FROM User user " +
    "WHERE (?1 = '*' OR user.name = ?1)");
List<User> getUsers(String userName);
Run Code Online (Sandbox Code Playgroud)

但是,当过滤器数量增加时,这意味着我需要更改许多参数。

java spring hibernate spring-data spring-data-jpa

1
推荐指数
1
解决办法
722
查看次数