2011-12-03 12 views
1

私はHibernateバージョン3.6を使用しています。データベースにClassインスタンスを格納する必要があります(Integer.class) とおそらく私はそれを行うことができます - NetBeansはObjectのようにエラーを表示しません。MySQLデータベースのクラスオブジェクトをHibernate経由でストア

マイGroupsテーブル:

@Entity 
public class Groups implements Serializable { 

    @Id 
    @GeneratedValue 
    private Long id; 
    private Class classOfGroup; 

    public void setClassOfGroup(Class classOfGroup) { 
     this.classOfGroup = classOfGroup; 
    } 

    public Class getClassOfGroup() { 
     return classOfGroup; 
    } 

    private void setId(Long id) { 
     this.id = id; 
    } 

    public Long getId() { 
     return id; 
    } 
} 

そしてAdditionalInformationGroupテーブル:

@Entity 
public class AdditionalInformationGroup implements Serializable { 

    @Id 
    @GeneratedValue 
    private Long id; 
    private Class groupClass; 
    private Boolean uniqueValue; 

    public void setUniqueValue(Boolean uniqueValue) { 
     this.uniqueValue = uniqueValue; 
    } 

    public Boolean getUniqueValue() { 
     return uniqueValue; 
    } 

    public void setGroupClass(Class groupClass) { 
     this.groupClass = groupClass; 
    } 

    public Class getGroupClass() { 
     return groupClass; 
    } 

    private void setId(Long id) { 
     this.id = id; 
    } 

    public Long getId() { 
     return id; 
    } 
} 

私はこれを行うと:

List<AdditionalInformationGroup> additionalInformationGroups = 
s.createCriteria(AdditionalInformationGroup.class) 
.add(Restrictions.eq("groupClass", group.getClassOfGroup())).list(); 

私が得た例外:

Exception in thread "AWT-EventQueue-0" org.hibernate.QueryException: Unsupported discriminator type null 
    at org.hibernate.loader.criteria.CriteriaQueryTranslator.getTypedValue(CriteriaQueryTranslator.java:499) 
    at org.hibernate.criterion.SimpleExpression.getTypedValues(SimpleExpression.java:71) 
    at org.hibernate.loader.criteria.CriteriaQueryTranslator.getQueryParameters(CriteriaQueryTranslator.java:251) 
    at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:94) 
    at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1569) 
    at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:283) 
    at Views.ConditionDialog.setFieldList(ConditionDialog.java:85) 

私はGroupsクラスのインスタンスにnullがないことを確認しました。私はここにバグを持っているのですか?または、休止状態でClassのインスタンスを保存できませんか?

+1

Classのタイプのフィールドを使用しているために例外が発生しているかどうかはわかりません。しかし、クラス名をStringとして保存するのはなぜですか? –

+0

私のコードはちょっと複雑になり、可能なすべてのソリューションをチェックしたい。 –

答えて

0

提供されたクラスが休止状態にマッピングされている場合、このような問題に直面します。しかし、クラスがハイバネート内にマップされていない場合は、それを正常に保存することができます。

JIRAはすでに募集しましたhereです。 JIRAで回避策を見つけることができます