在jpa的继承概念

时间:2010-03-25 07:23:21

标签: google-app-engine jpa

我使用继承概念创建了一个表来将数据输入谷歌应用引擎数据存储区。它包含以下编码,但它显示错误。如何用户继承概念。我的程序中的错误

计划1:

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public class calender {

    @Id
    private String EmailId;

    @Basic
    private String CalName;

    @Basic
    public void setEmailId(String emailId) {
        EmailId = emailId;    
    }

    public String getEmailId() {    
        return EmailId;    
    }

    public void setCalName(String calName) {    
        CalName = calName;    
    }

    public String getCalName() {
        return CalName;    
    }

    public calender(String EmailId, String CalName) {    
        this.EmailId = EmailId;    
        this.CalName = CalName;    
    }
}

计划2:

@Entity
public class method extends calender {
    @Id
    private String method;

    public void setMethod(String method) {
        this.method = method;
    }

    public String getMethod() {    
        return method;    
    }

    public method(String method) {    
        this.method = method;    
    }

}

我的约束是我想要像这样输出

Calendartable包含

Emailid 

calendarname

和方法表包含

Emailid

method

如何实现这一目标?

它在此行显示以下错误public method(String method)

java.lang.Error: Unresolved compilation problem: 

    Implicit super constructor calender() is undefined. Must explicitly invoke another constructor

3 个答案:

答案 0 :(得分:1)

  1. 根据 Using JPA with App Engine ,不支持JOINED继承策略。

  2. 您的代码无法编译,请在Calendar中添加默认构造函数。

  3. 我认为您不应该使用method@Id字段进行注释。

答案 1 :(得分:0)

GAE / J的数据存储区不是RDBMS,因此唯一有意义的“继承策略”是TABLE_PER_CLASS。我希望GAE / J如果你指定了这个策略就会抛出异常,如果没有,那么你应该针对它们提出一个问题

答案 2 :(得分:0)

您的错误“构造函数日历()未定义”非常简单。您应该在日历类中创建不带参数的构造函数(如果您不想使用它,可以将其设为私有)。这是因为只有在类中没有其他构造函数时,编译器才能自己创建默认构造函数。