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

标签 java mysql hibernate class

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

我的表:

@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 的实例?

最佳答案

如果提供的类在 hibernate 中映射,您将面临此类问题。但是,如果该类未映射到 hibernate 中,您将能够成功存储它。

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

关于java - 通过 Hibernate 在 MySQL 数据库中存储 Class 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8371952/

相关文章:

java - 如何在使用 JPA 持久化的同时将 PrimaryKey 的值(使用序列生成)分配给另一个变量?

java - 对对象的所有引用

mysql - Eloquent:从 whereHas block 中选择字段失败

mysql - 如何获取另一列中每个不同值的总和?

mysql - 为每个人插入一个成绩

hibernate - 如何从grails的映射表中获取值?

mysql - 如何在 hibernate 中仅存储 UTC 中的特定时间戳列

Java notify() 在 wait() 之前运行?

java - 在 webview 中加载特定的 url 中断

java - 为什么迭代排列生成器比递归慢?