gpt4 book ai didi

java - 如何访问jpa中的多对多表?

转载 作者:行者123 更新时间:2023-12-02 19:38:59 25 4
gpt4 key购买 nike

这是具有 @manytomany 映射的用户类,我希望它是单向的。

@Entity
@Getter
@Setter
@Table(name="users")
public class User implements UserDetails {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@ManyToMany
@JoinTable(name="user_drivers", joinColumns=@JoinColumn(name="user_id"), inverseJoinColumns=@JoinColumn(name="driver_id"))
private Set<Driver> driverSet;

public User() {
}
}

使用用户和驱动程序的 key 创建了一个表,但我不知道如何在我的存储库中访问它。

@Query(value="select u.user_id from user_drivers")
List<?> findAllByIdAndDriver(Long id);

这会出现错误:无法解析符号“user_drivers”

@Query(value="select id,driverSet from User ")
List<?> findAllByIdAndDriver(Long id);

这会导致嵌套查询异常。

最佳答案

您的方法命名令人困惑。当您说诸如 findByIdAndSomethingElse 之类的内容时,您暗示您正在执行以下操作:

SELECT * FROM MY_TABLE WHERE ID = ? AND SOMETHING_ELSE = ?;

这里缺少信息,因为您没有共享完整的存储库或 Driver 实现,但假设您想要来自具有特定 ID 的 Driver 的所有用户 ID,你可以简单地这样做:

@Query("select driver.userId from Driver driver where driver.id = ?1")
public List<Long> findUserIdsByDriverId(long id);

?1 是第一个参数。您可以使用 ?2, ?3, ... , ?n

引用后续参数

关于java - 如何访问jpa中的多对多表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60579951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com