我有一个以下的JPA实体:
SourceData:= _
"'Infolog Data'!R2C1:R3800C24"
为了将新的@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;
...
}
对象插入数据库,我需要执行以下步骤:
Session
user
对象,将Session
设置为此user
对象,然后调用session
如果我知道sessionRepository.save(session)
,是否可以避免步骤#1?我不想在可能的情况下对我的数据库进行冗余选择。
答案 0 :(得分:1)
使用EntityManager.getReference()
代替EntityManager.find()
(在Spring-data-jpa crud存储库中,此操作名为getOne()
)。
这将返回一个惰性的,未初始化的User代理,而不执行任何SQL查询。当然,您最好在数据库中使用外键约束,以确保在尝试为未使用的用户插入新会话时插入失败。
答案 1 :(得分:1)
您可以使用一个API。
如果您使用JPA,则可以使用entityManager.getReference()
来加载用户。这不会调用数据库,除非您对结果实例执行某些操作。
与此类似的Hibernate是session.load()
,其行为方式相同。