次の Hibernate オブジェクトを実装しています。
@Entity
@Table(name = "imageviewer_crvariable")
public class CRVariable implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
@Column(name = "VarId")
private Long varId;
@Column(name = "VarName")
private String varName;
@Column(name = "VarDescription")
private String varDescription;
@ManyToMany(mappedBy="crvariables")
private Set<CRImageType> crimagetypes = new HashSet<CRImageType>();
public CRVariable(){
}
public CRVariable(Long varId,String varName, String varDescription){
this.varId=varId;
this.varName=varName;
this.varDescription=varDescription;
}
//getters and setters
また、バック Bean によって管理される primefaces ピックリスト コンポーネントもあります。次のように、(リスト項目がソースからターゲットに転送された後) 新しいピックリスト値で休止状態オブジェクト (CRVariable) を更新するメソッド「setAssocImTypeVariables」を実装しました。
public void setAssocImTypVariables() {
dualListVars = getDualListVars();
List<CRVariable> sourceVariables = dualListVars.getSource();
List<CRVariable> targetVariables = dualListVars.getTarget();
for (int i=0; i<sourceVariables.size(); i++) {
System.out.println(">>>>>>>>>>>>> I am a source variable: " + sourceVariables.get(i));
}
for (int i=0; i<targetVariables.size(); i++) {
System.out.println(">>>>>>>>>>>>> I am a target variable: " + targetVariables.get(i));
}
CRImageType selectedImageType = getSelectedCRImageType();
Long selImTypeId = selectedImageType.getImTypeId();
このコードは正常に動作し、コンソールに表示される結果は次のとおりです。
>>>>>>>>>>>>> I am a source variable: varId : 75, varName : Ki67(X), varDescription : Ki67(X)
>>>>>>>>>>>>> I am a source variable: varId : 76, varName : PTEN(X), varDescription : PTEN(X)
>>>>>>>>>>>>> I am a source variable: varId : 77, varName : Histology (X), varDescription : Histology (X)
>>>>>>>>>>>>> I am a target variable: varId : 72, varName : HER2(X), varDescription : HER2(X)
>>>>>>>>>>>>> I am a target variable: varId : 71, varName : ER (X), varDescription : ER (X)
>>>>>>>>>>>>> I am a target variable: varId : 74, varName : FISH, varDescription : FISH description
しかし、targetVariables リストのオブジェクトごとに VarId を取得しようとすると、次のようになります。
System.out.println(">>>>>>>>>>>>> I am a target variable: " + targetVariables.get(i).getVarId());
次のエラーが表示されます。
>>>>>>>>>>>>> I am a target variable: varId : 72, varName : HER2(X), varDescription : HER2(X)
java.lang.ClassCastException: java.lang.String cannot be cast to com.forth.dbutils.CRVariable
at com.forth.actions.ReportConfiguratorBean.setAssocImTypVariables(ReportConfiguratorBean.java:414)
行 414 は、現在のオブジェクト リストの VarId プロパティを取得しようとしている行です: targetVariables.get(i).getVarId() :
System.out.println(">>>>>>>>>>>>> I am a target variable: " + targetVariables.get(i).getVarId());
私のHibernateオブジェクトの実装で何が間違っているかについてのアイデアはありますか???