如何在Maven项目中包含JPA 2.1功能?

时间:2014-09-24 18:58:17

标签: hibernate jpa left-join jpa-2.0 criteria

我正在使用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”功能?

1 个答案:

答案 0 :(得分:1)

这可能是一个maven问题。如果它下载的罐子由于某种原因被破坏,通常会发生这种情况。删除.m2文件夹存储库并再次执行mvn install,它应该带来所有enw jar和编译应该工作。

m2文件夹here