运行项目时出错:
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
。