我正在使用 Maven 3、JPA 2.1 和 Hibernate 4.3.5.Final。我想使用 JPA 2.1,因为它提供了几个特性,最显着的是向左外部连接子句添加条件。我在我的 Maven 项目中包含了以下依赖项……
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.1-api</artifactId>
<version>1.0.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.3.2.Final</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.3.6.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-ehcache</artifactId>
<version>4.3.6.Final</version>
</dependency>
但是,当我尝试编译以下内容时,在“.on(”子句上出现编译错误(“找不到符号”。
final CriteriaBuilder cb = m_entityManager.getCriteriaBuilder();
CriteriaQuery<Message> query = cb.createQuery(Message.class);
Root<Message> messageRoot = query.from(Message.class);
final Join<Message, Group> groupJoin = messageRoot.join(Message_.group);
final Join<Message, MessageReadDate> msgReadDateJoin = messageRoot.join(Message_.messageReads, JoinType.LEFT);
msgReadDateJoin.on(msgReadDateJoin.get(MessageReadDate_.recipient), recipient);
我需要在我的 Maven 项目中包含哪些库才能获得 JPA 2.1 以及“join.on”功能?
请您参考如下方法:
这可能是一个 maven 问题。如果下载的 jar 由于某种原因损坏,通常会发生这种情况。删除 .m2 文件夹存储库并再次执行 mvn install
,它应该会带来所有 enw jar 并且编译应该可以工作。
m2文件夹here