gpt4 book ai didi

java - JPA查询连接错误: org. hibernate.hql.internal.ast.QuerySyntaxException:连接所需的路径

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

我尝试加入以下 JPA 查询,但收到以下错误:

org.hibernate.hql.internal.ast.QuerySyntaxException: Path expected for join! [from com.crm.entity.User user join fetch Role role on role.user_id = user.id where user.deleted = false and user.enabled = true and user.username = :username]

这里是实现:

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import javax.transaction.Transactional;

import org.springframework.stereotype.Repository;

import com.crm.entity.User;

@Transactional
@Repository
public class UserJpaDaoImpl implements UserJpaDaoCustom {

@PersistenceContext
private EntityManager em;

@Override
public User getUser(String username) {
Query query = em.createQuery("from User user "
+ "join fetch Role role on role.userId = user.id "
+ "where user.deleted = false "
+ "and user.enabled = true "
+ "and user.username = :username", User.class);
query.setParameter("username", username);
return (User)query.getSingleResult();
}

}

用户实体:

@Entity
@Table(name = "user")
public class User extends BaseEntity implements UserDetails, Visible {

private static final long serialVersionUID = 1L;

@Column(name = "username")
private String username;

@Column(name = "password")
private String password;

/* Spring Security fields*/
@OneToMany
@JoinColumn(name = "user_id")
private List<Role> roles;
...

角色实体:

@Entity
@Table(name = "role")
public class Role implements GrantedAuthority, Identifiable {

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", unique = true, nullable = false)
private Integer id;

@Column(name = "name", nullable = false)
private String name;

@Column(name = "user_id")
private Integer userId;
...

我的查询中的联接有什么问题?

最佳答案

这是HQL而不是SQL:

   Query query = em.createQuery("from User user "
+ "join fetch user.role "
+ "where user.deleted = false "
+ "and user.enabled = true "
+ "and user.username = :username", User.class);

您必须研究对象结构而不是表格

关于java - JPA查询连接错误: org. hibernate.hql.internal.ast.QuerySyntaxException:连接所需的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43072040/

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