【发布时间】:2020-03-12 11:14:50
【问题描述】:
我想使用@EntityGraph注解只加载我需要的属性。
@Entity
@Data
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
private String username;
private String pw;
}
public interface UserRepository extends CrudRepository<User, Long> {
@EntityGraph(attributePaths = {"username"})
User readById(long id);
}
当我调用userRepository.readByid(1);时,我希望他不会加载pw属性,因为它没有在@EntityGraph中定义,所以SQL应该是:
选择 user0_.id 为 id1_0_, user0_.用户名作为用户名3_0_ 从 用户user0_ 在哪里 user0_.id=?
但 Hibernate 实际创建的 SQL 是:
选择 user0_.id 为 id1_0_, user0_.pw 作为 pw2_0_, user0_.用户名作为用户名3_0_ 从 用户user0_ 在哪里 user0_.id=?
谁能解释一下我做错了什么?
【问题讨论】:
-
我认为这里回答了同样的问题:stackoverflow.com/questions/53490655/…
标签: java spring hibernate spring-boot jpa