相关疑难解决方法(0)

使用Java泛型进行JPA findAll()查询和WHERE子句

因此,经过10年多的休整,我将回到Java并尝试使用JPA和Java泛型.我已经创建了一个基于泛型的findAll(other)JPA查询

SELECT * FROM source WHERE other_id = other.id;
Run Code Online (Sandbox Code Playgroud)

这是我要去的地方.它有效,但我想知道是否有更好,更清洁的方法来做到这一点.使用ManagedType很难,并没有太多完整的文档或简单的例子.

我决定尽可能保持我的代码通用(没有双关语),所以我使用JPA2.

这是所有实体类的根.我可能不需要它,但它阻止我有基本的错误.

import java.io.Serializable;

public abstract class DomainObject implements Serializable {

    private static final long serialVersionUID = 1L;

    public abstract void setId(Long id);
    public abstract Long getId();

}
Run Code Online (Sandbox Code Playgroud)

这是抽象的DAO类.我为实现类扩展了这个,因为我需要更具体地做其他活动 - 主要是确保加载延迟集.

public abstract class GenericDAOImpl<T extends DomainObject, T2 extends DomainObject> implements GenericDAO<T, T2> {

private Class<T> type;

@PersistenceContext
protected EntityManager entityManager;

public GenericDAOImpl(Class<T> type) {
    super();
    this.type = type;
}

... save and delete classes go …
Run Code Online (Sandbox Code Playgroud)

java generics jpa criteria-api

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

Hibernate选择表的所有行(使用.*)连接多个表,给出Exception

可以用Hibernate做这个吗?

select A.something, B.something, C.something, D.something , E.*  
      from  A  
      LEFT OUTER JOIN B on A.id = B.id_fk  
      LEFT OUTER JOIN C ON B.id = C.id_fk  
      LEFT OUTER JOIN D ON C.id = D.id_fk  
      LEFT OUTER JOIN E ON A.abc = E.abc;  
Run Code Online (Sandbox Code Playgroud)

这个查询在SQL中运行正常,但在Hibernate中给出了以下Exception:

org.hibernate.hql.ast.QuerySyntaxException: expecting IDENT, found '*' near line 1
Run Code Online (Sandbox Code Playgroud)

hibernate join

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

标签 统计

criteria-api ×1

generics ×1

hibernate ×1

java ×1

join ×1

jpa ×1