Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate异常-找不到命名参数_Java_Hibernate_Jakarta Ee_Jpa_Hibernate Criteria - Fatal编程技术网

Java Hibernate异常-找不到命名参数

Java Hibernate异常-找不到命名参数,java,hibernate,jakarta-ee,jpa,hibernate-criteria,Java,Hibernate,Jakarta Ee,Jpa,Hibernate Criteria,我试图从entity(table)StudySeries中从数据库中提取对象列表: @Entity @Table(name="StudySeries", uniqueConstraints = { @UniqueConstraint(columnNames = "SeriesInstanceUID")}) public class StudySeries implements Serializable { ... @Id @GeneratedValue(strategy

我试图从entity(table)StudySeries中从数据库中提取对象列表:

@Entity 
@Table(name="StudySeries", uniqueConstraints = {
@UniqueConstraint(columnNames = "SeriesInstanceUID")})
public class StudySeries implements Serializable {
    ...
    @Id
    @GeneratedValue(strategy = IDENTITY)
    @Column(name = "SeId", unique = true, nullable = false)
    private Long seId;

    @Column(name="SeriesInstanceUID", unique=true, nullable = false)
    private String seriesInstanceUID;
    ...
    @ManyToOne
    @JoinColumn(name = "StId", referencedColumnName="StId")
    private StudyDetails studyDetails;
    ...
}
@Entity
@Table(name="StudyDetails", uniqueConstraints = @UniqueConstraint(columnNames = "StudyInstanceUID"))
public class StudyDetails implements Serializable {

    @Id
    @GeneratedValue(strategy = IDENTITY)
    @Column(name="StId", unique = true, nullable = false)
    private Long stId;

    @Column(name="StudyInstanceUID", unique=true, nullable = false)
    private String studyInstanceUID;
    ...
    @OneToMany(fetch = FetchType.LAZY, mappedBy = "studyDetails", cascade = CascadeType.ALL)
    private Set<StudySeries> studySeries = new HashSet<StudySeries>(0);
    ...
}
此实体与StudyDetails N-1连接(在StudyDetails上有许多StudySeries):

然而,我得到:

org.hibernate.QueryParameterException: could not locate named parameter [stId]
at org.hibernate.engine.query.spi.ParameterMetadata.getNamedParameterDescriptor(ParameterMetadata.java:100) at org.hibernate.engine.query.spi.ParameterMetadata.getNamedParameterDescriptor(ParameterMetadata.java:100)
at org.hibernate.engine.query.spi.ParameterMetadata.getNamedParameterExpectedType(ParameterMetadata.java:106)
at org.hibernate.internal.AbstractQueryImpl.determineType(AbstractQueryImpl.java:466)
at org.hibernate.internal.AbstractQueryImpl.setParameter(AbstractQueryImpl.java:436)
at com.npap.dao.StudySeriesDAOImpl.getStudySeriesObjectsByStudyId(StudySeriesDAOImpl.java:239)

有什么问题吗?

在StudySeries类中,id被命名为“seId”,而不是“stId”。
您应该这样做:String hql=“from StudySeries E where E.seId=stId”

其中E.studyDetails.stId=:stId
.oopss!你是对的。。。在查询中忘记“:”。。。pffff…参数名称前面也必须紧跟“:”!i、 e没有空格,我想在where子句中使用外键stId。看看StudySeries实体上的@ManyToOne注释好的,我找到了。错误是您忘记在查询中使用冒号=:了。您应该执行String hql=“from StudySeries E,其中E.studyDetails.stId=:stId”;如果不使用:它将找不到参数。
String hql = "from StudySeries E where E.stId = stId";
org.hibernate.QueryParameterException: could not locate named parameter [stId]
at org.hibernate.engine.query.spi.ParameterMetadata.getNamedParameterDescriptor(ParameterMetadata.java:100) at org.hibernate.engine.query.spi.ParameterMetadata.getNamedParameterDescriptor(ParameterMetadata.java:100)
at org.hibernate.engine.query.spi.ParameterMetadata.getNamedParameterExpectedType(ParameterMetadata.java:106)
at org.hibernate.internal.AbstractQueryImpl.determineType(AbstractQueryImpl.java:466)
at org.hibernate.internal.AbstractQueryImpl.setParameter(AbstractQueryImpl.java:436)
at com.npap.dao.StudySeriesDAOImpl.getStudySeriesObjectsByStudyId(StudySeriesDAOImpl.java:239)