Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.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
JPA按id创建对象_Jpa_Spring Data_Spring Data Jpa - Fatal编程技术网

JPA按id创建对象

JPA按id创建对象,jpa,spring-data,spring-data-jpa,Jpa,Spring Data,Spring Data Jpa,我拥有以下JPA实体: @Entity @Table(name = "sessions") public class Session extends BaseEntity implements Serializable { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Integer id; @OneToOne @JoinColumn(name = "user_id")

我拥有以下JPA实体:

@Entity
@Table(name = "sessions")
public class Session extends BaseEntity implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;

    @OneToOne
    @JoinColumn(name = "user_id")
    private User user;

...

}
为了将新会话对象插入数据库,我需要执行以下步骤:

从数据库中选择用户 创建新会话对象,将用户设置为此会话对象,然后调用sessionRepository.savesession 如果我知道用户id,是否可以避免步骤1?我不想在可能的情况下对数据库进行冗余选择。

使用EntityManager.getReference而不是EntityManager.find在Spring data jpa crud存储库中,此操作名为getOne

这将返回一个懒惰的、未初始化的用户代理,而不执行任何SQL查询。当然,您最好在数据库中有一个外键约束,以确保在尝试为不存在的用户插入新会话时插入失败。

使用EntityManager.getReference而不是EntityManager.find在Spring data jpa crud存储库中,此操作名为getOne


这将返回一个懒惰的、未初始化的用户代理,而不执行任何SQL查询。当然,您最好在数据库中有一个外键约束,以确保在尝试为不存在的用户插入新会话时插入失败。

有一个API可用于此操作

如果您使用JPA,则可以使用加载用户。这将不会调用数据库,除非您对生成的实例执行某些操作


与此对应的Hibernate是,其行为方式相同。

有一个API可用于此

如果您使用JPA,则可以使用加载用户。这将不会调用数据库,除非您对生成的实例执行某些操作

与此对应的Hibernate是,其行为方式相同