zhou.sir 发表于 2022-4-24 11:38:22

新增了一个实体类,执行写入报错,招不到jpa 类

java.lang.Exception: can not find jpa assignable class for class com.x.organization.core.entity.SdyUser.
        at com.x.base.core.container.factory.SliceEntityManagerContainerFactory.assignableFrom(SliceEntityManagerContainerFactory.java:109)
        at com.x.base.core.container.EntityManagerContainerBasic.get(EntityManagerContainerBasic.java:33)
        at com.x.base.core.container.EntityManagerContainerBasic.beginTransaction(EntityManagerContainerBasic.java:44)
        at com.x.organization.assemble.authentication.jaxrs.sdy.ActionLogin.execute(ActionLogin.java:83)
        at com.x.organization.assemble.authentication.jaxrs.sdy.SdyAction.getLogin(SdyAction.java:39)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)




咋x_organization_core_entity模块中新增了一个实体类,然后再x_organization_assemble_authentication模块中接口调用写入报以上的错,我看了编译后也有这个类的,奇怪了,加了实体类有需要在其他地方额外配置吗。

写入的代码就是 //开始保存
emc.beginTransaction(SdyUser.class);
emc.persist(sdyUser);
emc.commit();

zhou.sir 发表于 2022-4-24 11:45:38

本帖最后由 zhou.sir 于 2022-4-24 20:14 编辑

实体类



package com.x.organization.core.entity;

import com.x.base.core.entity.JpaObject;
import com.x.base.core.entity.SliceJpaObject;
import com.x.base.core.entity.annotation.CheckPersist;
import com.x.base.core.entity.annotation.ContainerEntity;
import com.x.base.core.entity.annotation.Flag;
import com.x.base.core.entity.type.GenderType;
import com.x.base.core.project.annotation.FieldDescribe;
import org.apache.openjpa.persistence.jdbc.Index;

import javax.persistence.*;

@Entity
@ContainerEntity(dumpSize = 200, type = ContainerEntity.Type.content, reference = ContainerEntity.Reference.strong)
@Table(name = PersistenceProperties.SdyUser.table, uniqueConstraints = {
                @UniqueConstraint(name = PersistenceProperties.SdyUser.table + JpaObject.IndexNameMiddle
                              + JpaObject.DefaultUniqueConstraintSuffix, columnNames = { JpaObject.IDCOLUMN,
                                                JpaObject.CREATETIMECOLUMN, JpaObject.UPDATETIMECOLUMN, JpaObject.SEQUENCECOLUMN }) })
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class SdyUser extends SliceJpaObject {

      private static final long serialVersionUID = 5733185578089403689L;

      private static final String TABLE = PersistenceProperties.SdyUser.table;

      /**
         * 这个方法暂且不管
         * @throws Exception
         */
      @Override
      public void onPersist() throws Exception {

      }

      @Override
      public String getId() {
                return id;
      }

      @Override
      public void setId(String id) {
                this.id = id;
      }

      @FieldDescribe("数据库主键,自动生成.")
      @Id
      @Column(length = length_id, name = ColumnNamePrefix + id_FIELDNAME)
      private String id = createId();

      /* 以上为 JpaObject 默认字段 */

      /* 更新运行方法 */

      /* Entity 默认字段结束 */

      public static final String userId_FIELDNAME = "userId";
      @FieldDescribe("userId")
      @Enumerated(EnumType.STRING)
      @Column(length = GenderType.length, name = ColumnNamePrefix + userId_FIELDNAME)
      @Index(name = TABLE + IndexNameMiddle + userId_FIELDNAME,unique = true)
      @CheckPersist(allowEmpty = false)
      private String userId;

      public static final String account_FIELDNAME = "account";
      @FieldDescribe("账号")
      @Lob
      @Basic(fetch = FetchType.EAGER)
      @Column(length = JpaObject.length_128K, name = ColumnNamePrefix + account_FIELDNAME)
      private String account;

      public static final String phoneNumber_FIELDNAME = "phoneNumber";
      @FieldDescribe("用户绑定手机号")
      @Lob
      @Basic(fetch = FetchType.EAGER)
      @Column(length = JpaObject.length_128K, name = ColumnNamePrefix + phoneNumber_FIELDNAME)
      private String phoneNumber;

      public static final String email_FIELDNAME = "email";
      @FieldDescribe("邮箱地址")
      @Lob
      @Basic(fetch = FetchType.EAGER)
      @Column(length = JpaObject.length_128K, name = ColumnNamePrefix + email_FIELDNAME)
      private String email;

      public static final String name_FIELDNAME = "name";
      @FieldDescribe("昵称")
      @Column(length = length_255B, name = ColumnNamePrefix + name_FIELDNAME)
      @CheckPersist(allowEmpty = true)
      private String name;

      public static final String avatar_FIELDNAME = "avatar";
      @FieldDescribe("头像地址")
      @Column(length = length_255B, name = ColumnNamePrefix + avatar_FIELDNAME)
      @CheckPersist(allowEmpty = true)
      private String avatar;

      public static final String hbOfficeUserId_FIELDNAME = "hbOfficeUserId";
      @FieldDescribe("账号id")
      @Column(length = length_255B, name = ColumnNamePrefix
                        + hbOfficeUserId_FIELDNAME)
      @CheckPersist(allowEmpty = true)
      private String hbOfficeUserId;


      public static final String tbLevel_FIELDNAME = "tbLevel";
      @Flag
      @FieldDescribe("淘宝认证等级")
      @Column(length = length_255B, name = ColumnNamePrefix + tbLevel_FIELDNAME)
      @CheckPersist(allowEmpty = true, simplyString = false)
      private String tbLevel;


      public static final String jdLevel_FIELDNAME = "jdLevel";
      @Flag
      @FieldDescribe("京东认证等级")
      @Column(length = length_255B, name = ColumnNamePrefix + jdLevel_FIELDNAME)
      @CheckPersist(allowEmpty = true, simplyString = false)
      private String jdLevel;


      public static final String pddLevel_FIELDNAME = "pddLevel";
      @Flag
      @FieldDescribe("拼多多认证等级")
      @Column(length = length_255B, name = ColumnNamePrefix + pddLevel_FIELDNAME)
      @CheckPersist(allowEmpty = true, simplyString = false)
      private String pddLevel;

      public static final String alibabaLevel_FIELDNAME = "alibabaLevel";
      @Flag
      @FieldDescribe("1688认证等级")
      @Column(length = length_255B, name = ColumnNamePrefix + alibabaLevel_FIELDNAME)
      @CheckPersist(allowEmpty = true, simplyString = false)
      private String alibabaLevel;


      public static final String dydrLevel_FIELDNAME = "dydrLevel";
      @Flag
      @FieldDescribe("抖音达人认证等级")
      @Column(length = length_255B, name = ColumnNamePrefix + dydrLevel_FIELDNAME)
      @CheckPersist(allowEmpty = true, simplyString = false)
      private String dydrLevel;


      public static final String dyxdLevel_FIELDNAME = "dyxdLevel";
      @Flag
      @FieldDescribe("抖音小店认证等级")
      @Column(length = length_255B, name = ColumnNamePrefix + dyxdLevel_FIELDNAME)
      @CheckPersist(allowEmpty = true, simplyString = false)
      private String dyxdLevel;


      public static final String tbCategoryId_FIELDNAME = "tbCategoryId";
      @Flag
      @FieldDescribe("淘宝认证类目id")
      @Column(length = length_255B, name = ColumnNamePrefix + tbCategoryId_FIELDNAME)
      @CheckPersist(allowEmpty = true, simplyString = false)
      private String tbCategoryId;


      public static final String tbCategoryName_FIELDNAME = "tbCategoryName";
      @Flag
      @FieldDescribe("淘宝认证类目名称")
      @Column(length = length_255B, name = ColumnNamePrefix + tbCategoryName_FIELDNAME)
      @CheckPersist(allowEmpty = true, simplyString = false)
      private String tbCategoryName;


      ===================get set 省略==============
}

zhou.sir 发表于 2022-4-24 11:46:44

PersistenceProperties类中加入   这段。还有啥漏配置的吗

public static class SdyUser {
                public static final String table = "sdy_user";
                public static final String distinguishNameCharacter = "P";
                public static final Pattern distinguishedName_pattern = Pattern.compile("^(\\S+)\\@(\\S+)\\@P$");
        }

zhou.sir 发表于 2022-4-24 20:33:00

已解决~~~

论坛管理员 发表于 2022-4-25 09:57:24

:victory:

chenwen123 发表于 2022-10-31 13:27:16

怎么解决的呀,分享一下呗。

chenwen123 发表于 2022-10-31 15:17:07

补充:   添加完实体之后需要在x_base_core_project 下面x_organization_**(调用实体类的项目下面) 在里面的containerEntities下面添加对应实体的路径加类名

simple 发表于 2023-12-21 18:16:46

本帖最后由 simple 于 2023-12-21 18:19 编辑

请问一下,我参照本案例新建了一个实体类,能够正常创建数据表,但是执行写入操作后没有写入任何数据,后台没有任何报错日志,请问是什么原因?写入原有系统表是有数据的——基于V8.1.2版本。

simple 发表于 2023-12-21 18:24:41

论坛管理员 发表于 2022-4-25 09:57


请版主帮忙指点一下,谢谢。
页: [1]
查看完整版本: 新增了一个实体类,执行写入报错,招不到jpa 类