【问题标题】:JPA relationship to possibly non-existent objectJPA 与可能不存在的对象的关系
【发布时间】:2012-02-17 19:05:21
【问题描述】:

作为参考,我正在使用 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 为您创建对象的简洁性。如果Data 对象中没有ID 记录,有没有办法让JPA 给我一些Device 的默认实例化?

【问题讨论】:

    标签: hibernate jpa playframework many-to-one


    【解决方案1】:

    嗯...我想如果您想获得一个不在您的数据库中的设备,我认为您无法实现您想要的。

    您可以实例化对象,但如果您尝试向数据库发送查询,它将失败。因此,如果您想要存储设备的行为,请通过Device 寻找Data,例如:

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

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

    你收到了吗?还是我没有得到你的尝试?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-12
      • 1970-01-01
      • 2020-11-12
      • 1970-01-01
      • 2022-09-25
      • 1970-01-01
      • 2021-06-19
      相关资源
      最近更新 更多