Hibernate:无法在hql中的类上找到适当的构造函数



运行项目时出错:

org.hibernate.hql.internal.ast.QuerySyntaxException:在类[com.meetzen.Dto.profileJoinTo].上找不到合适的构造函数

下面是我的代码:

实体

public class profileEntity {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int p_id;
private String website;
private String bio;
private String gender;
@OneToOne(cascade = CascadeType.ALL, targetEntity = registrationEntity.class)
@JoinColumn(name = "user_id", referencedColumnName = "u_id")
private registrationEntity registrationEntity;
// getter setter
}
public class registrationEntity {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int u_id;
@Column(unique = true)
private String email;
private String username;
private String password;
private String contact;
private String date;
// getter setter
}

profileJoinTo

public class profileJoinDto {
private Integer u_id;
private Integer p_id;
private String email;
private String username;
private String password;
private String contact;
private String date;
private String website;
private String bio;
private String gender;
// getter setter
}

配置文件报告

public interface profileRepo extends JpaRepository<profileEntity, Integer>{
@Query("SELECT new com.meetzen.Dto.profileJoinDto(r.username, r.email, r.contact, p.bio, p.website, p.gender) FROM profileEntity p JOIN p.registrationEntity r WHERE r.u_id = ?1")
profileJoinDto findById(int id);
}

堆栈跟踪

Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: Unable to locate appropriate constructor on class [com.meetzen.Dto.profileJoinDto]. Expected arguments are: java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String [SELECT new com.meetzen.Dto.profileJoinDto(r.username, r.email, r.contact, p.bio, p.website, p.gender) FROM com.meetzen.Entity.profileEntity p JOIN p.registrationEntity r WHERE r.u_id = ?1]
at org.hibernate.hql.internal.ast.QuerySyntaxException.convert(QuerySyntaxException.java:74) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
at org.hibernate.hql.internal.ast.ErrorTracker.throwQueryException(ErrorTracker.java:93) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:282) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:192) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:144) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:113) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:73) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:162) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
at org.hibernate.internal.AbstractSharedSessionContract.getQueryPlan(AbstractSharedSessionContract.java:613) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:725) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
... 86 common frames omitted

FROM profileEntity p JOIN p.registrationEntity p

您在这里使用了两次相同的别名(p)。尝试使用FROM profileEntity p JOIN p.registrationEntity r

最新更新