Java EE SqlResultSetMapping 语法

我有以下 Java 6 代码:

    Query q = em.createNativeQuery( 
        'select T.* ' +
        'from Trip T join Itinerary I on (T.itinerary_id=I.id) ' +
        'where I.launchDate between :start and :end ' +
        'or ADDDATE(I.launchDate, I.equipmentPullDayOfTrip) between :start and :end',
        'TripResults' );

    q.setParameter( 'start', range.getStart(), TemporalType.DATE );
    q.setParameter( 'end', range.getEnd(), TemporalType.DATE );

    @SqlResultSetMapping( name='TripResults',
        entities={
            @EntityResult( entityClass=TripEntity.class ),
            @EntityResult( entityClass=CommercialTripEntity.class )
        }
    )

我收到最后一个右括号的语法错误。 Eclipse 给出:“插入 EnumBody 以完成块语句”和“插入枚举标识符以完成 EnumHeaderName”。来自 javac 的类似语法错误。

我做错了什么?

请先 登录 后评论

1 个回答

Glenn Moss

您的示例直接来自 API 文档,不幸的是,这些文档呈现不佳。

您的注释应该放在某个类上,可能是您将在其中创建查询以使用结果集映射的类。然而,这个注解的放置位置实际上并不重要。您的 JPA 提供者实际上会维护所有这些映射的全局列表,因此无论您在哪里定义它,您都可以在任何地方使用它。

这是注解方法的一个缺点(与在 XML 中指定事物相反)。JPA 中的许多其他事物(即命名查询)都是以同样的方式定义的。这使得被定义的事物与注释它的类之间似乎存在某种联系,而实际上并非如此。

请先 登录 后评论