Spring Data - 找到类型java.util.Date后没有属性

时间:2014-05-27 15:26:34

标签: java spring hibernate jpa spring-data-jpa

在过去的两天里,我一直在努力争取一些东西,而且不能把它搞得一团糟。 我正在使用Java 7,Spring数据jpa 1.0和Hibernate 4.3.1.Final。 我正在尝试根据日期进行查询。我已修剪代码以使其可读

所有日期均为java.util.Date

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class Informe {
    @Id
    @GeneratedValue(strategy = GenerationType.TABLE)
    @Column(name = "ID")
    private Long id;

    @OneToOne(fetch=FetchType.LAZY, cascade = CascadeType.ALL)
    @JoinColumn(name="COMUNICACION_ID")
    private Comunicacion comunicacion;

    public Comunicacion getComunicacion() {
        return comunicacion;
    }

    public void setComunicacion(Comunicacion comunicacion) {
        this.comunicacion = comunicacion;
    }
}

@Entity
@Table(name = "REGISTRO_CALIFICACION")
public class RegistroCalificacion extends Informe {
}

@Entity
@Table(name = "COMUNICACION")
public class Comunicacion {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "ID")
    private Long id;
    @Basic
    @javax.persistence.Column(name = "FECHA_PUBLICACION_DESDE", nullable = false, insertable = true,     updatable = true, length = 19, precision = 0)
    private Date fechaPublicacionDesde;

    public Date getFechaPublicacionDesde() {
        return fechaPublicacionDesde;
    }

    public void setFechaPublicacionDesde(Date fechaPublicacionDesde) {
        this.fechaPublicacionDesde = fechaPublicacionDesde;
    }
}

public interface InformeRepository extends BaseRepository<Informe, Long> {
    List<RegistroCalificacion> findByComunicacionFechaPublicacionDesdeAfter(Date date);

}

这会在创建bean时抛出此异常

Caused by: org.springframework.data.mapping.PropertyReferenceException: No property after found for type java.util.Date

但如果我直接访问Comunicación,如下所示,它可以正常工作。

public interface ComunicacionRepository extends BaseRepository<Comunicacion, Long> {

   List<Comunicacion> findByFechaPublicacionDesdeBefore(Date date);
}

我尝试过使用@Query,得到了相同的结果。 有什么想法吗?

3 个答案:

答案 0 :(得分:0)

我认为这应该是你的存储库:

public interface RegistroCalificacionRepository extends BaseRepository<RegistroCalificacion, Long> {

    List<Comunicacion> findByFechaPublicacionDesdeBefore(Date date);
}

因为您希望查询RegistroCalificacion而不是Comunicacion。

答案 1 :(得分:0)

你可以添加

吗?
@Temporal(TemporalType.DATE)

@javax.persistence.Column(name = "FECHA_PUBLICACION_DESDE", nullable = false, insertable = true,     updatable = true, length = 19, precision = 0)
@Temporal(TemporalType.DATE)
private Date fechaPublicacionDesde;

答案 2 :(得分:0)

应该是:

public interface InformeRepository extends BaseRepository<Informe, Long> {
    List<RegistroCalificacion> findByComunicacionFechaPublicacionDesde(Date date);

}

您正在添加单词&#34; After&#34;在您的方法名称的末尾,并且存储库无法在您的&#34; Comunicacion&#34;上找到名称相同的属性。实体。