【问题标题】:Spring data jpa JOIN does't work in @QuerySpring data jpa JOIN 在@Query 中不起作用
【发布时间】:2018-03-20 19:07:14
【问题描述】:

我正在使用 spring-data-jpa。我写了一个本机查询,但它不起作用。这是我的实体类:

@Entity
@Table(name="view_version")
public class ViewVersionDom {

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

@ManyToOne
@JoinColumn(name="view_id")
private ViewDom view;

private Integer version;

@ManyToOne
@JoinColumn(name="datasource_param_id")
private DatasourceParamDom datasourceParam;

private String description;

@Column(name="created_date")
private Date createdDate;

@Entity
@Table(name="view_permission")
public class ViewPermissionDom extends BaseDom {
private static final long serialVersionUID = 1L;

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

@ManyToOne
@JoinColumn(name="view_id")
private ViewDom view;

@ManyToOne
@JoinColumn(name="user_id")
private UserDom user;

@ManyToOne
@JoinColumn(name="group_id")
private GroupDom group;

private Boolean read;

private Boolean write;

private Boolean execute;

这里是查询:

@Query(value = " SELECT v FROM ViewVersionDom v LEFT JOIN ViewPermissionDom vp ON v.view.id = vp.id " 
         + " where (v.view.user.id = ?1 OR (vp.read=true and (vp.user.id=?1 or vp.user.id is NULL and vp.group.id is NULL or vp.group.id in (?2)))) "
         + " ORDER BY v.view.name", nativeQuery=true)
public List<ViewVersionDom> findUserViews(Long userId, List<Long> groupIds);

起初,当我没有编写 nativeQuery=true 时,应用程序没有构建,并且出现异常“连接 jpa 的预期路径”。当我设置 nativeQuery=true 时,应用程序已启动,但当我调用该函数时,出现以下错误:

org.hibernate.engine.jdbc.spi.SqlExceptionHelper - [ERROR: relation "viewversiondom" does not exist Position: 16] 
org.hibernate.exception.SQLGrammarException: could not extract ResultSet] 

是否有任何其他设置或注释可以解决问题? 我在谷歌搜索过,但在所有情况下都有 2 个表直接相互连接。

【问题讨论】:

    标签: spring-data-jpa


    【解决方案1】:

    您的查询不是 SQL 查询(假设您的表中没有 v 列)。

    此外,表viewversiondom 不存在或无法被用于连接的数据库用户访问。

    此外,在将本机查询映射到域对象时,您应该查看 https://jira.spring.io/browse/DATAJPA-980

    【讨论】:

      猜你喜欢
      • 2020-12-10
      • 2017-08-21
      • 2021-12-19
      • 1970-01-01
      • 2018-03-31
      • 2017-09-21
      • 2019-02-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多