通过Hibernate在MySQL数据库中存储Class对象

时间:2011-12-03 23:41:31

标签: java mysql hibernate class

我使用Hibernate 3.6版。我必须将Class实例存储在数据库中(例如Integer.class) 并且我可能会这样做 - NetBeans不会像Object那样显示错误。

我的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。我有没有错误,或者我无法通过hibernate存储Class的实例?

1 个答案:

答案 0 :(得分:1)

如果提供的类在hibernate中映射,你将面临这样的问题。但如果该类未在hibernate中映射,则可以成功存储它。

JIRA已经提出here。同样有一些解决方法,您可以在JIRA中找到解决方法