相关疑难解决方法(0)

如何在save()之前阻止Spring数据JPA执行SELECT?

我们正在针对现有数据库编写新的应用程序.我正在使用Spring Data JPA,只是做了一个

MyRepository.save() 
Run Code Online (Sandbox Code Playgroud)

在我的新实体上,使用

MyRepository extends CrudRepository<MyThing, String>
Run Code Online (Sandbox Code Playgroud)

我在日志中注意到hibernate在插入之前正在执行Select,并且即使使用索引它们也需要很长时间.

我在这里搜索过这个,我发现答案通常与Hibernate有关.我对JPA很新,看起来JPA和Hibernate非常紧密地交织在一起,至少在Spring Data的上下文中使用它时.链接的答案建议使用Hibernate persist(),或以某种方式使用会话,可能来自entityManager?我没有必要对会话或entityManagers或任何直接的Hibernate API做任何事情.到目前为止,我已经使用save()和我的存储库中的一些@Query完成了简单的插入.

java spring hibernate spring-data-jpa

14
推荐指数
2
解决办法
9589
查看次数

Hibernate OneToOne映射在insert之前执行select语句; 不知道为什么

我在我的实体中配置了一个简单的OneToOne映射,但是当我持久化该对象时,我看到在插入之前由Hibernate执行的"Select"语句,我不知道为什么.

@Entity 
@Table( name = "USER" )
public class NewUser {

   @OneToOne
   @JoinColumn(name="user_status_type_id", nullable=false)
   private UserStatusType userStatusType;
Run Code Online (Sandbox Code Playgroud)

UserStatusType只是一个只读查找表,因此当我保存用户时,该表中没有任何内容.

User u = new User();
u.setUserStatusType( new UserStatusType(101));
session.persis(u);
Run Code Online (Sandbox Code Playgroud)

但是当我持久保存User对象时,Hibernate的输出如下:

Hibernate: select userstatus_.user_status_type_id, userstatus_.user_status_name as user2_3_ from USER_STATUS_TYPE userstatus_ where userstatus_.user_status_type_id=?
Hibernate: insert into USER (created, first_name, last_name, password, user_name, user_status_type_id) values (?, ?, ?, ?, ?, ?)
Run Code Online (Sandbox Code Playgroud)

我不知道这对Hibernate来说是否正常.我想,因为它是一个"持久"操作,我只会看到一个Insert语句; 不确定选择的目的.

映射不正确吗?

hibernate

4
推荐指数
1
解决办法
3224
查看次数

标签 统计

hibernate ×2

java ×1

spring ×1

spring-data-jpa ×1