【问题标题】:ActiveJDBC Object with Multiple Parents that reference the same ClassActiveJDBC 对象具有多个引用同一类的父对象
【发布时间】:2013-10-02 13:59:55
【问题描述】:

我有一个相当简单的模型,其中包含两个对象:团队和游戏。 Team 对象具有团队的名称,Game 对象查找 Team 对象两次。一个通过“away_team_id”,一个通过“home_team_id”字段。

  Game ----home_team_id----> Team
    |
    +------away_team_id----> Team

我对 ActiveJDBC 还很陌生,但使用 PHP ActiveRecord 已经有一段时间了。我一生都无法弄清楚如何通过 Game 对象引用每个团队。我的 Game 对象中确实有这些注释:

@BelongsToParents({ 
@BelongsTo(foreignKeyName="home_team_id",parent=Team.class), 
@BelongsTo(foreignKeyName="away_team_id",parent=Team.class)
}) 

public class Game extends Model {
}

在我的测试代码中,我有:

Team homeTeam = game.parent (Team.class);

但显然这只是其中之一,我什至不确定它是如何确定是哪一个!任何帮助将不胜感激。

提前致谢!

【问题讨论】:

    标签: activejdbc


    【解决方案1】:

    这是一个不寻常的案例。我会建议这样的事情:

    public class Game extends Model{
      public Team getHomeTeam(){
        return Team.findFirst("id = ?", get("home_team_id"));
      }
        public Team getAwayTeam(){
        return Team.findFirst("id = ?", get("home_away_id"));
      }
    }
    

    我建议将 ActiveJDBC 包装在这样的语义方法中,以帮助将来进行潜在的重构。

    发送

    【讨论】:

    • Okie dokie。我真的“认为”我的模型是实现我正在尝试做的事情的最佳方式。我能够使用 PHP Active Record 轻松地使其工作,但是当我尝试使用 Java 工作时,我遇到了问题。
    • 这根本不是“不寻常的情况”。语义方法是有意义的,但是您失去了急切加载功能。是否可以让 include() 方法指定您包含的“字段”?
    • 我的意思是,parent() 或 include() 方法应该指定你想要的“字段”,而不仅仅是类名。
    • 这里是 Github 问题和讨论的链接:github.com/javalite/javalite/issues/1087
    猜你喜欢
    • 1970-01-01
    • 2013-11-21
    • 2012-10-06
    • 1970-01-01
    • 1970-01-01
    • 2017-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多