【问题标题】:Can't get a string field from an object in another object in siena无法从siena中另一个对象中的对象获取字符串字段
【发布时间】:2011-05-28 15:24:46
【问题描述】:

我无法获取位于另一个对象内部的对象中的字段。我可以得到一些字段,但其他字段没有。

这是我为重现此错误而创建的测试。

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);
    }
} 

失败了

assertNotNull(comment.user.nome);

这不是一个交易破坏者,因为我仍然可以访问该字段对数据库进行其他调用,但我可以访问某些字段而其他字段不能访问似乎很奇怪

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

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

【问题讨论】:

    标签: java playframework siena


    【解决方案1】:

    基本上没有,这是正常的。
    您使用 GAE,对吗?
    在 GAE 中,请记住在 SQL DB 中没有 JOIN。
    当您获取评论时,链接的用户不会被完全获取,而只会填充 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&lt;EventComment&gt; ecs = e.comments.fetch();
    这种连接要复杂得多,在我们进行实体分组之前,它会在幕后消耗太多资源。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-31
      • 2022-01-22
      • 1970-01-01
      • 2013-07-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多