Java QueryDSL查询异常
我对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
@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);
}