gpt4 book ai didi

java - GAE & Siena - 抽象类和实例化异常

转载 作者:行者123 更新时间:2023-12-01 15:42:15 24 4
gpt4 key购买 nike

我正在使用 Play! 构建我的第一个 GAE 应用程序。框架和我在锡耶纳和抽象类方面遇到问题。

该应用程序中的一项功能是允许用户上传其他用户可以发表评论的帖子。但是,当我尝试创建从抽象 Post 继承的多个帖子类型时,我遇到了问题。类。

Post类和相应的 Picture子类定义如下:

发布

public abstract class Post extends Model {

//***EDIT*** - added default constructor
public Post(){

}

@Id(Generator.AUTO_INCREMENT)
public long id;

@Filter("post")
public Query<Comment> comments;

public static Query<Post> all() {
return Model.all(Post.class);
}

public static Post findById(long id) {
return all().filter("id", id).get();
}

public Comment addComment( User user, String s_comment ){
Comment comment = new Comment( this, s_comment );
return comment;
}

public List<Comment> comments() {
return comments.order().fetch();
}
}

图片

public class Picture extends Post {

//***EDIT*** - added default constructor
public Post_Pic(){

}

public String path;
public String description;

}


以及各自的Comment类:

评论

public class Comment extends Model {

@Id(Generator.AUTO_INCREMENT)
public long id;

@Index("post_index")
public Post post;

public String comment;

public static Query<Comment> all() {
return Model.all(Comment.class);
}

public static Comment findById(long id) {
return all().filter("id", id).get();
}

public Comment( Post post, String comment ){
this.post = post;
this.comment = comment;
}
}


我遇到的问题是,当我尝试获取 Picture 的评论时对象,一个 InstantiationException 被抛出。

Siena(或 Java)是否尝试创建 Post 的新实例当检索Comment时结果抛出 InstantiationException ?如果是这样,任何人都可以为我指明实现我想要做的事情的正确方向吗?


*** 编辑 ***

我已将默认构造函数添加到我的模型中,但不幸的是这没有效果。

抛出错误的测试代码如下:

@Test
public void commentPost_Pic(){
User bob = new User( fullname, email, password );
bob.insert();
bob = User.connect( email, password );
assertNotNull( bob );

Post_Pic post_pic = new Post_Pic();
post_pic.insert();
Comment comment = post_pic.addComment( bob, testComment );
comment.insert();

List<Comment> comments = post_pic.comments(); //**** <- Error gets thrown here
assertEquals( 1, comments.size() );
}

InstantiationException 被抛出到 List<Comment> comments = post_pic.comments(); 行.

最佳答案

尝试在模型中创建默认构造函数...Siena 使用反射来创建类,但它不会尝试使用特定的构造函数!告诉我是否效果更好!

关于java - GAE & Siena - 抽象类和实例化异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7866801/

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