0

我是 Open JPA 的新手,我正在将我的应用程序数据库服务从以 Hibernate 作为供应商提供者的 JPA 迁移到以 OpenJPA 作为供应商提供者的 JPA。一切都很好,但我无法迁移我的存储库。我收到以下错误:

Caused by: org.springframework.data.mapping.PropertyReferenceException: No property find found for
type com.entities.LevelPossibilityData
    at org.springframework.data.mapping.PropertyPath.<init>(PropertyPath.java:75)
    at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:327)
    at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:353)
    at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:353)
    at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:353)
    at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:353)
    at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:307)
    at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:271)
    at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:245)
    at org.springframework.data.repository.query.parser.Part.<init>(Part.java:72)

这是我的实体:

package com.entities;

import java.io.Serializable;
import java.math.BigDecimal;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;

import org.apache.commons.lang.builder.ReflectionToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;

import java.lang.reflect.Field;

@Entity
@Table(name = "LEVEL_POSSIBILITY_DATA", schema = "DEV")
@NamedQueries({
    @NamedQuery(name = "LevelPossibilityData.findAllPossibilityGenIds", query = "SELECT distinct possibilityData.levelPossibilityGenId FROM LevelPossibilityData possibilityData where possibilityData.userCode is not null and possibilityData.possibilityType=?1  order by possibilityData.levelPossibilityGenId asc")})

public class LevelPossibilityData implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
@Column(name = "LEVEL_SEQ_ID")
private BigDecimal levelSeqId;

@Column(name = "LEVEL_USER_CODE")
private String userCode;

@Column(name = "LEVEL_USER_POSSIBILITY_TYPE")
private String possibilityType;

@Column(name = "LEVEL_POSSIBILITY_GENERATOR_ID")
private String levelPossibilityGenId;

}

和我的存储库:

package com.dao;

import java.io.Serializable;
import java.util.List;

import org.springframework.data.jpa.repository.JpaRepository;

import com.entities.LevelPossibilityData;

public interface LevelPossibilityDataRepository<ID extends Serializable> extends JpaRepository<LevelPossibilityData, Serializable> {

public List<LevelPossibilityData> findAllPossibilityGenIds(String possibilityType); 

}

你能帮我纠正这个错误吗?

4

1 回答 1

0

我能够通过从实体中删除命名查询来解决这个问题。我通过使用 @Query 注释将查询直接引入存储库。

只有一个问题,如果您使用 openJPA 并尝试在存储库中使用 @Query,请尝试使用所用实体的完整路径,例如在查询中使用“com.entities.LevelPossibilityData”而不是“LevelPossibilityData”,即您的查询应该是“从 com.entities.LevelPossibilityData 级别选择级别”而不是“从 LevelPossibilityData 级别选择级别”。

我希望这个解释会有所帮助。感谢大家花时间在这上面。

于 2014-06-10T07:12:29.760 回答