簡體   English   中英

Jpa 2.0 - EntityManager.find(SomeEntity.class,PK)需要將Descriminator值填入key

[英]Jpa 2.0 - EntityManager.find (SomeEntity.class,PK) need to fill Descriminator value to key

我有一個問題,我有兩個實體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;
......
} 

我有兩個類擴展了Job:CalculatingJob和ImportingJob現在我不會使用:

getEntityManager().find(CalculatingJob.class, new JobPK    (BigDecimal.valueOf(folderId),name))

我有問題,因為我必須填寫我的JobPK descriminator值字段。 如果我不這樣做,我就會得到Null Pointer Exception。 默認情況下,我認為描述符值是密鑰,但我不希望在JobPk創建期間將有關descriminator值的信息顯示出來。 我認為從Job擴展的實體將自動填充此字段。 任何想法繞過這個問題,也許我可以從CalculatingJob獲取Annotation @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 {

}

ImportingJob.java

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

}

JobPK.java

public class JobPK implements Serializable {    

}

鑒別符值由hibernate輸入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM