【问题标题】:JPA OneToOne relationships returning nullJPA OneToOne 关系返回 null
【发布时间】:2019-03-08 11:11:32
【问题描述】:

我有这门课

public class Hotel implements Serializable {


    @OneToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "FILE_ID")
    private File file;

..
}

还有这个查询

Query query = em.createQuery("SELECT file.hotel FROM File file   where file.id = :id ");

如果关系中不存在酒店但文件存在,我想知道是否可以返回空的 Hotel 对象而不是 null

【问题讨论】:

  • 我认为你的查询应该更像SELECT hotel.file from ...。不,你不能返回一个空的酒店,因为它仍然必须在数据库中。您唯一能做的就是使用@PostLoad 并检查结果是否为空,如果是,则将其设置为空酒店

标签: java spring hibernate jpa hibernate-mapping


【解决方案1】:

由于您使用的是 JPA,因此您可以使用存储库。 JPA 可以自动返回Optional<> 的类型。通过Optional.isPresent(),您可以检查查询是否返回了某些内容。

存储库可能如下所示:

public interface FileRepository extends JpaRepository<File, Long> {
    Optional<File> findById(Long id);

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 2019-08-12
    • 1970-01-01
    • 1970-01-01
    • 2021-05-22
    • 1970-01-01
    相关资源
    最近更新 更多