Java QueryDSL查询异常

Java QueryDSL查询异常,java,hibernate,jpa,querydsl,Java,Hibernate,Jpa,Querydsl,我对QueryDSL查询有问题。课程: @Entity @Table(name="project") @Cacheable(true) @Cache(usage= CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) public class Project extends DomainObject implements Comparable<Project>, IconizedComponent, Commentable { @Ma

我对QueryDSL查询有问题。课程:

@Entity
@Table(name="project")
@Cacheable(true)
@Cache(usage= CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class Project extends DomainObject implements Comparable<Project>, IconizedComponent, Commentable {

    @ManyToMany(targetEntity=Student.class)
    @JoinTable(name="project_student")
    @Sort(type=SortType.NATURAL) //Required by hibernate
        @QueryInit({"user"})
    private SortedSet<Student> projectParticipants = new TreeSet<Student>();

    private Project(){}

    //attributes, get+set methods etc

}

@Entity
@Cacheable(true)
@Cache(usage= CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) //Hibernate specific
public class Student extends Role {

    public Student(){}

    //attributes, get+set methods etc

}

@Entity
@DiscriminatorColumn(name = "rolename", discriminatorType = DiscriminatorType.STRING, length = 8)
@Table(name="role", uniqueConstraints={@UniqueConstraint(columnNames={"user_id","rolename"}, name = "role_is_unique")})
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
public abstract class Role extends LazyDeletableDomainObject implements Comparable<Role> {

    @ManyToOne(optional=false)
    protected User user;

    public Role(){}

    //attributes, get+set methods etc
}

@Entity
@Table(name="user")
@Cacheable(true)
@Cache(usage= CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) //Hibernate specific
public class User extends LazyDeletableDomainObject implements Comparable<User>, IconizedComponent {

    private String firstName;
    private String lastName;

    public User(){}

    //attributes, get+set methods etc

}
我还尝试用注释项目中设置的项目参与者

@QueryInit("*.*")
但也有同样的例外。有什么提示吗?

@Timo Westkämper @siebZ0r

谢谢你的关注。很抱歉延迟回复,问题措辞错误。实际上我想做的是写一个布尔表达式

结合已经做出的注释,这就是我所追求的:

private BooleanExpression authorsFirstNameContains(String searchTerm){
    return QProject.project.projectParticipants.any().user.firstName.containsIgnoreCase(searchTerm);
}

在一位同事的帮助下,我做到了这一点。

您的实际查询结果如何?我只看到一个谓词的工厂方法。你能发布抛出的异常吗,或者更好地发布stacktrace?此外,您最初的目标并不明确,如果您告诉我们您正在尝试做什么,人们可能会提供可能的替代方案。
private BooleanExpression authorsFirstNameContains(String searchTerm){
    return QProject.project.projectParticipants.any().user.firstName.containsIgnoreCase(searchTerm);
}