Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jpa 2.0-EntityManager.find(SomeEntity.class,PK)需要将描述符值填充到键_Java_Jpa - Fatal编程技术网

Java Jpa 2.0-EntityManager.find(SomeEntity.class,PK)需要将描述符值填充到键

Java Jpa 2.0-EntityManager.find(SomeEntity.class,PK)需要将描述符值填充到键,java,jpa,Java,Jpa,我有个问题,我有两个实体Job和JobPK Job class looks like this sample code : @Entity @IdClass(JobPK.class) @Table(name="JOB") @Inheritance @DiscriminatorColumn(name="JOB_TYPE") public abstract class Job implements Serializable { @Id @Column(name="FOLDER_ID") priv

我有个问题,我有两个实体Job和JobPK

Job class looks like this sample code :

@Entity
@IdClass(JobPK.class)
@Table(name="JOB")
@Inheritance
@DiscriminatorColumn(name="JOB_TYPE")

public abstract class Job implements Serializable {
@Id
@Column(name="FOLDER_ID")
private BigDecimal folderId;

@Id
@ColumnDefinition(position = 1)
private String name;

@Column(name="JOB_TYPE",insertable=false,updatable=false)   
private String jobType;
...
}
和JobPk:

public class JobPK implements Serializable {    

private static final long serialVersionUID = -3266336718203527905L;

@Column(name="JOB_TYPE",insertable=false,updatable=false)
private String jobType;

@Id
private String name;

@Id
@Column(name="FOLDER_ID")
private BigDecimal folderId;
......
} 
我有两个扩展作业的类:计算作业和导入作业 现在我习惯使用:

getEntityManager().find(CalculatingJob.class, new JobPK    (BigDecimal.valueOf(folderId),name))
我遇到了这个问题,因为我必须填写IjobPK描述符值字段。如果我不这样做,我就有空指针异常。默认情况下,描述符值在键中,我想,但我不希望在创建JobPk期间将描述符值的信息显式地放入。我认为从工作中延伸出来的实体将自动填补这个领域。如果想绕过这个问题,也许我可以从CalculatingJob中获取注释@DescriminatorVale,然后将其放入构造函数JobPk中


感谢您的帮助

尝试此层次结构配置

Job.java

@Table(name = "JOB")
@Inheritance
@IdClass(JobPK.class)
@DiscriminatorColumn(name = "JOB_TYPE", discriminatorType = DiscriminatorType.STRING)
public abstract class Job implements java.io.Serializable {

}
CalculatingJob.java

@Entity
@DiscriminatorValue("CalculatingJob")
public class CalculatingJob extends Job {

}
@Entity
@DiscriminatorValue("ImportingJob")
public class ImportingJob extends Job {

}
ImportingJob.java

@Entity
@DiscriminatorValue("CalculatingJob")
public class CalculatingJob extends Job {

}
@Entity
@DiscriminatorValue("ImportingJob")
public class ImportingJob extends Job {

}
JobPK.java

public class JobPK implements Serializable {    

}

鉴别器值由hibernate输入。

您是否解决了此问题?如果是,您是如何解决的?