Java Can';t从锡耶纳另一个对象中的对象获取字符串字段

Java Can';t从锡耶纳另一个对象中的对象获取字符串字段,java,playframework,siena,Java,Playframework,Siena,我在获取一个位于另一个对象内部的对象中的字段时遇到问题。我可以得到一些领域,但其他没有 这是我创建的用于重现此错误的测试 public void commentTest(){ try { new MyUser("mauri@mail.com","Maurizio Pozzobon","01","facebook","hash").insert(); } catch (Exception e) {} MyUser user = MyUser.findByEm

我在获取一个位于另一个对象内部的对象中的字段时遇到问题。我可以得到一些领域,但其他没有

这是我创建的用于重现此错误的测试

public void commentTest(){
    try {
        new MyUser("mauri@mail.com","Maurizio Pozzobon","01","facebook","hash").insert();
    } catch (Exception e) {}
    MyUser user = MyUser.findByEmail("mauri@mail.com");
    Place place = new Place(user,"posto","bel posto",null,null);
    place.insert();
    assertNotNull(user);
    Event e =new Event(user,place, "Festa","Questa è una gran bella festa",null,new Date(),(long) 10,false,null);
    e.insert();
    assertNotNull(user.nome);
    EventComment ec = new EventComment(user, e, "TestComment", new Date());
    ec.insert();
    List<EventComment> ecs = e.comments.fetch();
    for (EventComment comment : ecs) {
        assertNotNull(comment.user.id);
        MyUser us= MyUser.findById(comment.user.id);
        assertNotNull(us.nome);
        assertNotNull(comment.user.nome);
    }
} 
这不是一个交易破坏者,因为我仍然可以访问该字段并对DB进行其他调用,但似乎很奇怪,我可以访问某些字段,而其他字段则无法访问

在MyUser中,我尝试了使用和不使用以下注释声明“nome”字段

@Column("nome")
@Max(200) @NotNull
public String nome;

基本上没有,这是正常的。
你用GAE,对吗?
在GAE中,请记住SQL DB中没有连接。
获取注释时,不会完全获取链接用户,而只填充user.id字段。这就是为什么
assertNotNull(comment.user.id)
是可以的。
因此,默认情况下,如果希望用户与注释关联,则需要手动获取注释

这一限制应该很快改变,因为我们将很快提供实体分组和一个新的注释@Join,它将自动获取链接实体

您已经可以尝试此注释,但尚未完成。 在评论类中,添加@Join:

@Join
@Column("user")
User user;
然后,当您获取一条注释时,它也将获取带有该注释的用户

Comment comment = Comment.findById("id", value);  
assertNotNull(comment.user.nome); // will be OK.
但它不应该在以下情况下工作:
List ecs=e.comments.fetch()
这种连接要复杂得多,在我们进行实体分组之前,它会在幕后消耗太多资源

Comment comment = Comment.findById("id", value);  
assertNotNull(comment.user.nome); // will be OK.