【问题标题】:Class cast exception while using composite key in service builder在服务生成器中使用复合键时发生类转换异常
【发布时间】:2016-08-11 22:10:47
【问题描述】:

我有一个使用 Liferay 服务构建器进行持久性的父 portlet。子 Portlet 使用相同的实体进行持久性。因此,我使用 Liferay 插件属性将父 portlet 作为依赖项添加到子 portlet 中。如果我有实体的单个主键,一切都很好。但是在复合主键实体的情况下,如果我找到使用它的实体,则会发生类转换异常。我找不到原因。是因为类加载器问题吗?

【问题讨论】:

    标签: liferay-6 classcastexception composite-key liferay-service-builder


    【解决方案1】:

    服务 jar 存在于父 portlet 和子 portlet 中,在这种情况下我们无法避免。在调试时,即使 PK 类对象是在子 portlet 中创建的,持久性仍然发生在使用父 portlet 类加载器的父 portlet 中。这就是问题所在。

    解决方案是在localserviceImpl中创建一个方法用于持久化或获取而不使用组合PK。使用单独的 PK 属性创建。使用属性在 localServiceImpl 中创建 PK 并进行获取或持久化。

    【讨论】:

      【解决方案2】:

      您的classpath 很可能有两次这些课程。当您通过liferay-plugin-package.properties 定义依赖关系时,jars 将在WEB-INF/lib 中。可能你在全球classpathtomcat/lib/ext上也有同样的jars

      【讨论】:

      • 我在全局类路径中没有 jar。服务 jar 存在于父 portlet 和子 portlet 中,在这种情况下我们无法避免。在调试时,即使 PK 类对象是在子 portlet 中创建的,持久性仍然发生在使用父 portlet 类加载器的父 portlet 中。这就是问题所在。
      【解决方案3】:

      我听从了 San 的建议,没关系:

      public class [ENTITY_NAME]LocalServiceImpl extends [ENTITY_NAME]LocalServiceBaseImpl {
          /*
           * NOTE FOR DEVELOPERS:
           *
           * Never reference this interface directly. Always use {@link [ENTITY_NAME]LocalServiceUtil} to access the [ENTITY_NAME] local service.
           */
      
      /* (non-Javadoc)
       * @see [ENTITY_NAME]LocalService#createEntity(java.lang.String, java.util.Date)
       */
          public [ENTITY_NAME] createEntityName(String user, java.util.Date fecha) {
              [ENTITY_NAME]PK entityNamePK = new EntityNamePK();
              [ENTITY_NAME] entityName;
              entityNamePK.setUser(user);
              entityNamePK.setDate(fecha);
              entityName = createEntityName(entityNamePK);
              return entityName;
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-19
        • 1970-01-01
        • 1970-01-01
        • 2015-11-27
        • 1970-01-01
        相关资源
        最近更新 更多