相关疑难解决方法(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/Metamodel:Sun Docs中的奇怪(不一致?)示例

Sun Online资源中,他们提供了关于Criteria/Metamodel API使用的儿子示例,但据我了解Java,似乎无法工作:

CriteriaQuery<Pet> cq = cb.createQuery(Pet.class);
Metamodel m = em.getMetamodel();
EntityType<Pet> Pet_ = m.entity(Pet.class);
EntityType<Owner> Owner_ = m.entity(Owner.class);

Root<Pet> pet = cq.from(Pet.class);
Join<Owner, Address> address = cq.join(**Pet_.owners**).join(**Owner_.addresses**);
Run Code Online (Sandbox Code Playgroud)

Pet_是一个类的实例, EntityType没有定义任何名为owners或的属性addresses.

他们确实定义了名为Pet_Owner_元模型的类,但是在这里输入它们会产生与变量名称的冲突......我是对的吗?

__

(这个问题也与此相关的一个)

java jpa criteria-api metamodel jpa-2.0

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

查询@ElementCollection JPA

我有一个Entity Transaction如下:

@Entity
class Transaction extends AbstractEntity<Long>{
        private static final long serialVersionUID = 7222139865127600245L;
        //other attributes

    @ElementCollection(fetch = FetchType.EAGER, targetClass = java.lang.String.class)
    @CollectionTable(name = "transaction_properties", joinColumns = @JoinColumn(name = "p_id"))
    @MapKeyColumn(name = "propertyKey")
    @Column(name = "propertyValue")
    private Map<String, String> properties;

    //getters and setters
}
Run Code Online (Sandbox Code Playgroud)

所以,我的数据库Tabletransaction_properties

mysql> desc transaction_properties;
+---------------+--------------+------+-----+---------+-------+
| Field         | Type         | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+-------+
| p_id          | bigint(20)   | NO   | PRI |         |       | …
Run Code Online (Sandbox Code Playgroud)

java spring hibernate jpa hibernate-criteria

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

Hibernate Criteria API 已弃用,但 JPA Criteria API 很复杂且几乎无法使用(例如用于连接)

我的理解是 Hibernate Criteria API 已被弃用:

从 Hibernate 5.2 开始,应使用 JPA Criteria API

但在 Hibernate Criteria API 中,构建复杂的查询JOINs很容易。我可以这样做:

Criteria criteriaQuery = session.createCriteria(Request.class);
// 1. Prepare aliases (JOINs) from main table
if (!StringUtils.isBlank(searchCriteria.getRequestorName())) {
    criteriaQuery.createAlias("requestor", "npRequestor", JoinType.INNER_JOIN);
}
if (!StringUtils.isBlank(searchCriteria.getApproverName())) {
    criteriaQuery.createAlias("workflows", "wf", JoinType.INNER_JOIN);
    criteriaQuery.createAlias("wf.approver", "npApprover", JoinType.INNER_JOIN);
}
// Prepare criteria
// ...
criteriaQuery.add(Restrictions.eq("wf.someAttribute", someAttr));
}       
Run Code Online (Sandbox Code Playgroud)

但是在JPAJOINs Criteria API 中进行复杂的查询是极其困难的。正如该线程中的一位用户指出的那样,“我很难使用 Criteria API 创建复杂的联接,并且找不到大量的文档和示例。

简单的 Join 需要创建 a Metamodel(一个单独的进程),然后创建一个EntityType,并且语法很难构造。下面只是最简单的示例,但我有多个 If/Else 条件和多路联接。

CriteriaQuery<Pet> …
Run Code Online (Sandbox Code Playgroud)

hibernate jpa criteria-api hibernate-criteria

5
推荐指数
0
解决办法
397
查看次数