当前位置: 首页 > 知识库问答 >
问题:

不返回值的jpa复合主键表

壤驷志学
2023-03-14
Problem compiling [select t from ASSIGN_TASK_EMPLOYEE t]. 
    [14, 34] The abstract schema type 'ASSIGN_TASK_EMPLOYEE' is unknown.
        at org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:1605)
@Entity
        @Table(name = "ASSIGN_TASK_EMPLOYEE")
        //@IdClass(AssignTaskEmployeePk.class)
        public class AssignTaskEmployee implements Serializable {

            @EmbeddedId
            private AssignTaskEmployeePk assignTaskEmployeePk;

            public AssignTaskEmployeePk getAssignTaskEmployeePk() {
                return assignTaskEmployeePk;
            }

            public void setAssignTaskEmployeePk(AssignTaskEmployeePk assignTaskEmployeePk) {
                this.assignTaskEmployeePk = assignTaskEmployeePk;
            }

        }

       @Embeddable
        public class AssignTaskEmployeePk  {

            private String employeeId;
            private String taskId;
            public AssignTaskEmployeePk() {
            }

            @Override
            public boolean equals(Object obj) {
                // TODO Auto-generated method stub

                if (obj instanceof AssignTaskEmployeePk) {

                    AssignTaskEmployeePk employeePk = (AssignTaskEmployeePk) obj;
                    if (!employeePk.getEmployeeId().equals(this.employeeId)) {
                        return false;
                    }           
                    else if (!employeePk.getTaskId().equals(this.taskId)) {
                        return false;
                    }

                }
                else {
                    return false;
                }

                return false;

            }

            @Override
            public int hashCode() {      
                return employeeId.hashCode() + taskId.hashCode() ;
            }

            public String getEmployeeId() {
                return employeeId;
            }

            public void setEmployeeId(String employeeId) {
                this.employeeId = employeeId;
            }

            public String getTaskId() {
                return taskId;
            }

            public void setTaskId(String taskId) {
                this.taskId = taskId;
            }


            }
EMP_ID   TASKID
1         2
2         4
3         5
4         6 
entityManager.createQuery("select t from ASSIGN_TASK_EMPLOYEE t").getResultList()

当我执行这个查询时,我会得到以下异常

Exception Description: 

Problem compiling [select t from ASSIGN_TASK_EMPLOYEE t]. 
            [14, 34] The abstract schema type 'ASSIGN_TASK_EMPLOYEE' is unknown.
                at org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:1605)

共有1个答案

邹杰
2023-03-14

JPQL应该使用实体名称,默认为类的名称。AssignTaskEmployee

应该是

entityManager.createQuery("select t from AssignTaskEmployee  t").getResultList()

以上将返回表ASSIGN_TASK_EMPLOYEE中的所有记录。

    Query query =  entityManager.createQuery("select t from AssignTaskEmployee t WHERE 
t.assignTaskEmployeePk.employeeId = :employeeId and t.assignTaskEmployeePk.taskId = :taskId")

query.setParameter("employeeId", 1);
query.setParameter("taskId",1);

query.getSingleResult()  //As expected to have only one record.
 类似资料:
  • 我有一个复合主键,其中一个键为空。实体中必须存在哪些注释,以便我可以使用此类JPA获取数据: 我尝试使用IdClass Annotation和EmbeddedId Annotation,但出现异常: 例如,使用了数据,但在实际项目中使用了类似的数据,因此无法用值替换null。

  • 问题内容: 我的JPA模型中有以下类(省略了getters,setters和无关字段): 我需要定义一个类,使得当从所述类生成DDL时,相应的表的主键被由密钥和。我尝试了以下方法: 但这会为表生成以下内容: 请注意,和都是可为空的,当我尝试将DDL加载到SQL Server时会导致以下错误 无法在表“ PRICE”中的可为空的列上定义PRIMARY KEY约束 我不明白为什么这些可以为空,因为在域

  • 我在oracle数据库中有一个包含客户数据的表。以下是一个简化的定义: 此表的主键是。 该表有许多行,其中为空。在数据库级别,没有问题,但是当我试图通过JPA实体访问这些行时,会导致一些问题: 1:使用

  • EmbeddedId或IdClass注释用于表示复合主键。如何在没有(EmbeddedId或IdClass)的情况下使用复合主键? 如果可以在没有(EmbeddedId或IdClass)的情况下使用复合主键,那么如何使用EntityManager.find(Entity Class,Object primaryKey)方法在复合主键(Multiple primaryKey)的情况下查找实体(因为没

  • 我很难在Hibernate中映射复合主键连接。下面是我的模式的简化图片。请注意,我不能更改架构。 简化模式 引用com.corp.activity.tree的referencedColumnNames(id)未映射到单个属性 如何在Hibernate中构建这样的关系?我必须映射到单个属性(id),尽管主键是复合的。

  • 我有以下表格,如何将它们映射到JPA实体: 事件表与会议表具有一对多的关系。我如何在JPA中映射这种双向关系?