我有@ManyToOne链接的实体,当我使用条件执行查询时,spring使用交叉连接,但我只想选择自己的列。
案例:
#define NS_GET_PARENT _IO(NSIO, 0x2)
struct stat sb;
fd = open("/proc/1337/ns/user", O_RDONLY);
parent_fd = ioctl(fd, NS_GET_PARENT);
我只想创建类似“select ... from job where user_id = 123456”的查询, 但是春天执行就像“选择......从工作中交叉加入用户u,其中m.creator = u.uid和u.uid = 123456”。
如何避免在ManyToOne链接中使用条件,只需选择自己的列。
答案 0 :(得分:2)
我认为你应该将fetch类型设置为lazy:(fetch = FetchType.LAZY
),
或删除它,默认为@OneToMany为LAZY。
这种方式hibernate(不是spring)会在你的Job表上做一个简单的select查询。但是如果你将它保留给EAGER,hibenate将始终使用User表上的join来获取它的数据,另一方面,使用LAZY模式,获取用户数据的查询将仅在你{{1但是在这种情况下,事务/会话应该保持打开状态。
此致
答案 1 :(得分:0)
创建查询。即。
@Query(value = "SELECT * FROM JOB WHERE USER_ID = ?1", nativeQuery = true)
Job getByUserId(Integer userId);