1

我正在liferay 7 ga3 中开发一个自定义portlet。

我在 May 数据层使用 spring data jpa,我有自己的数据库和自己的连接,我自己的实体被注释。

在我的一个实体类中,我需要与 Liferay 的用户类(com.liferay.portal.kernel.model.User)建立多对多关系,

@ManyToMany
@JoinTable(name = "authuserservice", joinColumns = @JoinColumn(name = "servicename"), inverseJoinColumns = @JoinColumn(name = "screenName"))
List<User> users;

但我遇到了错误

Caused by: org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: it.realt.trasparenza.services.services.Service.users[com.liferay.portal.kernel.model.User]
    at org.hibernate.cfg.annotations.CollectionBinder.bindManyToManySecondPass(CollectionBinder.java:1223)
    at org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:800)
    at org.hibernate.cfg.annotations.CollectionBinder$1.secondPass(CollectionBinder.java:725)
    at org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:54)
    at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processSecondPasses(InFlightMetadataCollectorImpl.java:1621)
    at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processSecondPasses(InFlightMetadataCollectorImpl.java:1589)

有谁知道我该如何解决这个问题?

提前致谢

4

1 回答 1

2

例外很明显。您正在使用自己的休眠配置,而不是使用 liferay 服务构建器。发生这种情况是因为您在 hibernate 中的实体不包含 User.class 映射。

换句话说,使用服务构建器模型实体以您想要的方式在 liferay 中工作,否则您将只能使用您的自定义休眠实体。

如果您实现在指向用户表的休眠配置中映射的 View SQL,并且您将列表对象定义为 View 实体,您也可以“破解”这个问题。但我不推荐它。

于 2017-02-22T21:23:59.610 回答