java - 带join的Querydsl实体继承查询

标签 java hibernate postgresql jpa querydsl

我有三个实体。用户( parent )

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "user_type")
@Table(name = "userinfo")
@SequenceGenerator(name = "userInfoUserIdSeq", initialValue = 1, allocationSize = 100, sequenceName = "userinfo_user_id_seq")
public abstract class UserInfo {

public static final String EDITOR = "E";
public static final String TALENT = "T";

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "userInfoUserIdSeq")
@Column(name = "user_id")
private Long id;
...

编辑( child )

@Entity
@DiscriminatorValue(UserInfo.EDITOR)
@Table(name = "editors")
public class Editor extends UserInfo { ....

记者( child )

@Entity
@DiscriminatorValue(UserInfo.TALENT)
@Table(name = "talent")
public class Talent extends UserInfo { .....

我有以下无效的查询,写在 querydsl 上

    QUserInfo userInfo = QUserInfo.userInfo;
    text = "%"  + text + "%";
    QTalent talent = QTalent.talent;
    QEditor editor = QEditor.editor;
    SearchResults<UserInfo> results = query.from(userInfo).leftJoin(userInfo, talent._super)
            .leftJoin(userInfo, editor._super).where( .....

我有以下堆栈跟踪:

     at            com.mysema.query.jpa.impl.AbstractJPAQuery.createQuery(AbstractJPAQuery.java:127)
    at com.mysema.query.jpa.impl.AbstractJPAQuery.listResults(AbstractJPAQuery.java:261)
    at com.washpost.talent.dao.implementation.UserInfoDaoImpl.findAllUsersByNamesAndEmails(UserInfoDaoImpl.java:33)
    ... 113 more
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: Path expected for join! [select count(userInfo)
from com.washpost.talent.model.UserInfo userInfo
  left join treat(userInfo as Talent) as talent
  left join treat(userInfo as Editor) as editor
where ....

我不明白为什么我的连接不起作用

最佳答案

在 JPQL 中,您可以连接属性,但不能连接鉴别器表,就像您尝试做的那样。但如果您能描述您需要的信息,将会很有帮助。

关于java - 带join的Querydsl实体继承查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28718250/

相关文章:

java - 如何返回正确的结果和错误列表

java - android studio 因简单请求而崩溃

java - JPA 标准 API : join on another query

hibernate - hibernate 关联缓存

java - 执行HQL请求

postgresql - postgres - 使用主键时外部查询速度慢

java - 如何计算索引json android的值

java - 谷歌自定义搜索 API

python - 在 Django 中将 Django-Hstore 用于 PostgreSQL HSTORE 时出错

mysql - 关系数据库中的时区混淆