我正在使用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”功能?
答案 0 :(得分:1)
这可能是一个maven问题。如果它下载的罐子由于某种原因被破坏,通常会发生这种情况。删除.m2文件夹存储库并再次执行mvn install
,它应该带来所有enw jar和编译应该工作。
m2文件夹here