0

次のアノテーションを持つ親クラスがあります

@PersistenceCapable(table = "my_parent_table", objectIdClass = Myclass.PK.class, detachable = "true", identityType = IdentityType.APPLICATION)
@Inheritance(strategy = InheritanceStrategy.NEW_TABLE)
@Discriminator(strategy = DiscriminatorStrategy.VALUE_MAP, column = "discriminator", value = "0")

これで、すべての子クラスに次のアノテーションが付けられました。ただし、アノテーションのvalue属性@Discriminatorはもちろん異なり、アノテーションの属性も異なりtableます@PersistanceCapable

@PersistenceCapable(detachable = "true", table = "my_table")
@Inheritance(strategy = InheritanceStrategy.NEW_TABLE)
@Discriminator(value = "1")

そして、で注釈が付けられたDAOクラスを介して@Persistence、PoCとして次のメソッドを使用しています

    public List<MyParentClass> test() {
        PersistenceManager pm = null;
        try {
            pm = getPM();
            Query q = pm.newQuery(MyParentClass.class);
            return (List<MyParentClass>) q.execute();
        } catch (Exception e) {
            log.error(e.getMessage(), e);
            return null;
        } finally {
            pm.close();
        }
    }
4

1 に答える 1

0

DataNucleus彼のコメントで提案されているように、ログを確認しました。@Discriminator親クラスにa を使用するべきではありませんでした。

子クラスに を使用できるかどうかはわかりませんが@Discriminator、階層全体で完全に使用を中止する方法を考え出したので、異なるクラスの異なるレコードは本質的に区別されます。

于 2012-12-18T11:36:59.493 に答える