【问题标题】:JDO enums implementing interfaceJDO 枚举实现接口
【发布时间】:2011-11-07 18:27:29
【问题描述】:

我正在尝试创建一个 JDO 持久类,它包含一个枚举列表,它实现了一个特定的接口。 代码如下:

public interface Column {

}

public enum ColumnType1 implements Column {
    VALUE11, VALUE12
}

public enum ColumnType2 implements Column {
    VALUE21, VALUE22
}

这是持久化类:

@PersistenceCapable(detachable = "true")
public class ListTable implements Serializable {

    @PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.UUIDHEX)
    @Column(jdbcType = "VARCHAR", length = 32)
    private String encodedKey;

    // the list of columns that can be displayed in the table
    @Persistent(defaultFetchGroup = "true", nullValue = NullValue.EXCEPTION)
    private List<Column> columns;

    // constructor and getters ...
}

问题是我收到了这个错误:

javax.jdo.JDOUserException: The MetaData for the element class "com.example.shared.model.Column" of the collection field "com.example.shared.model.ListTable.columns" was not found.
at org.datanucleus.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException(NucleusJDOHelper.java:497)
at org.datanucleus.jdo.JDOPersistenceManager.jdoMakePersistent(JDOPersistenceManager.java:671)
at org.datanucleus.jdo.JDOPersistenceManager.makePersistent(JDOPersistenceManager.java:691)

当我尝试持久化 ListTable 时。 您对我可以做些什么来持久化实现特定接口的枚举列表有什么建议吗?

【问题讨论】:

    标签: java interface enums jdo


    【解决方案1】:

    接口的“二类对象”(SCO) 实现不是 JDO 可持久类型(请参阅 JDO 规范)。接口用于持久类型 (FCO)

    【讨论】:

    • 那么,上面的场景在实践中是不能重现的,使用JDO?或者您对如何以其他方式进行操作有任何建议?
    猜你喜欢
    • 2020-11-28
    • 2011-02-12
    • 2016-09-03
    • 2014-07-11
    • 1970-01-01
    • 2013-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多