Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Model play框架中按日期的值对象建模_Model_Playframework - Fatal编程技术网

Model play框架中按日期的值对象建模

Model play框架中按日期的值对象建模,model,playframework,Model,Playframework,几天前刚开始使用play framework时,我遇到了一个问题: 我有两个模型:Share和ShareValue 简化共享: @Entity public class Share extends Model { @Required public String name; } 简化股票价值: @Entity public class ShareValue extends Model { @ManyToOne public Share share; pub

几天前刚开始使用play framework时,我遇到了一个问题:

我有两个模型:Share和ShareValue

简化共享:

@Entity
public class Share extends Model {
    @Required
    public String name;
}
简化股票价值:

@Entity
public class ShareValue extends Model {
    @ManyToOne
    public Share share;
    public Date date;
    public double value;
}
如上所示,截至日期,ShareValue持有单个股票的当前和历史价值

现在,在我的应用程序的大多数部分中,特别是当我使用Share对象时,我只需要共享的当前值,例如,用当前值呈现共享列表。为了方便地呈现这些列表,使用一个简单的getter访问当前的ShareValue将非常方便。此外,出于性能原因,我希望使用此值初始化对象,而不必对access发出另一个查询

创建将当前值连接到共享的SQL查询非常容易,但是如何将结果绑定到共享模型?我可以在共享对象中添加@OneToOne依赖项吗?但是我如何指定当前日期呢

或者这是不可能的,我将向发布另一个查询以获取当前ShareValue的共享添加一个简单的getCurrentValue()方法


我不知怎么迷路了。谢谢你的帮助

您缺少关系的一面:

@Entity
public class Share extends Model {
    @Required
    public String name;

    @OneToMany(mappedBy = "share")
    public List<ShareValue> values;
    
    public ShareValue getLatest(){
        return ShareValue.findLAtest(this);
    }
}

@Entity
public class ShareValue extends Model {
    @ManyToOne
    public Share share;
    public Date date;
    public double value;

    public static ShareValue findLatest(Share share){
       return ShareValue.find("where share = ? order by date desc", share).first();
    }
}
@实体
公共类共享扩展模型{
@必需的
公共字符串名称;
@OneToMany(mappedBy=“共享”)
公共列表值;
公共共享值getLatest(){
返回ShareValue.findLAtest(此);
}
}
@实体
公共类ShareValue扩展模型{
@许多酮
公众股;
公开日期;
公共双重价值;
公共静态ShareValue findLatest(共享){
返回ShareValue.find(“where share=?order by date desc”,share).first();
}
}
你看过这出戏了吗?如果你不熟悉JPA和打球,这是一个很好的起点


您还可以使用排序集而不是列表来获取排序后的共享值并返回最新的值。

是。我已经试过了,迭代一个共享的所有值也没问题——但是,正如我上面提到的,从关系的这一方面来说,这可能是我从未做过的事情。此外,我希望在访问共享时只获取最新的值对象,因为这是我大多数时间所需要的