JPA与可能不存在的对象的关系

时间:2012-02-17 19:05:22

标签: hibernate jpa playframework many-to-one

供参考,我正在使用Play!框架。

我有一个JPA实体,它代表设备上传感器收集的数据。以下是类声明的相关部分:

@Entity
public class Data extends Model
{
    @ManyToOne
    Device dataCollector;

    @ManyToOne
    User user;
}

问题是,我需要能够从设备收集数据而不管它们是否在本地数据库中注册,因此可能存在具有ID的设备,但ID与本地数据库无关。

JPA创建Data表的方式,dataCollector的列只是Device个ID。但是当您尝试检索具有无效Device的ID的记录时,它会抛出异常,因为它无法实例化Device对象。

我可以通过简单地将Device的ID存储在Data对象中来解决问题,但我真的很喜欢JPA为您创建对象的清晰度。如果Device对象中没有ID记录,有没有办法让JPA给我一些Data的默认实例化?

1 个答案:

答案 0 :(得分:0)

嗯......我想如果你想获得一个不在数据库中的设备,我认为你无法达到你想要的效果。

您可以实例化该对象,但如果您尝试向数据库发送查询,则会失败。因此,如果您想要存储设备的行为,请按Data Device搜索:{/ 1>

List<Data> dataGathered = Data.find("dataCollector = ?", theDataCollector).fetch();

这就是我对这些帖子的理解......

你明白了吗?或者我没有得到你的尝试?