供参考,我正在使用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
的默认实例化?
答案 0 :(得分:0)
嗯......我想如果你想获得一个不在数据库中的设备,我认为你无法达到你想要的效果。
您可以实例化该对象,但如果您尝试向数据库发送查询,则会失败。因此,如果您想要存储设备的行为,请按Data
Device
搜索:{/ 1>
List<Data> dataGathered = Data.find("dataCollector = ?", theDataCollector).fetch();
这就是我对这些帖子的理解......
你明白了吗?或者我没有得到你的尝试?