gpt4 book ai didi

java - 为什么继承深度在 GAE 上的 Datanucleus JDO 中很重要?

转载 作者:行者123 更新时间:2023-12-01 05:40:46 28 4
gpt4 key购买 nike

如果我有一级继承,所有内容都会按预期保留在 App Engine 中:

Worker.java

import javax.jdo.annotations.IdGeneratorStrategy;
import javax.jdo.annotations.Inheritance;
import javax.jdo.annotations.InheritanceStrategy;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.PrimaryKey;

@PersistenceCapable
@Inheritance(strategy = InheritanceStrategy.SUBCLASS_TABLE)
public abstract class Worker {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key key;

@Persistent
private String department;
}

员工.java

// ... imports ...

@PersistenceCapable
public class Employee extends Worker {
@Persistent
private int salary;

}

实习生.java

import java.util.Date;
// ... imports ...

@PersistenceCapable
public class Intern extends Worker {
@Persistent
private Date internshipEndDate;
}

但是,如果我添加一层额外的继承,则最高级别子类中的字段不会保留:

人类.java

@PersistenceCapable
public abstract class Human {

@Persistent
private String name;
}

Worker.java

@PersistenceCapable
@Inheritance(strategy = InheritanceStrategy.SUBCLASS_TABLE)
public abstract class Worker extends Human {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key key;

@Persistent
private String department;
}

为什么可以扩展抽象类,但不能让该抽象类扩展更高级别的类?

最佳答案

并且您的主键现在不在(持久)继承树的根类中,因此 JDO 和 JPA 规范无效。

关于java - 为什么继承深度在 GAE 上的 Datanucleus JDO 中很重要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7231932/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com