Невозможно преобразовать строку в Timespamp внутри REST - PullRequest
0 голосов
/ 04 января 2019

Привет :) Я действительно надеюсь, что смогу найти помощь здесь!

Проблема: я использую Spring JPA, создал базовую службу REST, я добавил свою базу данных и могу найти данные в базе данных с помощью entitymanager.createQuery ()

НО, когда я пытаюсь найти метку времени или дату, это выдает мне эту ошибку:

15:12   SELECT b FROM StationsMessung b WHERE b.AVNR=:AVNR AND 
b.TXNR=:TXNR AND b.DBTM=:DATUM
        java.lang.ClassCastException: java.lang.String cannot 
be cast to java.util.Date
        at org.hibernate.type.descriptor.java.JdbcTimestampTypeDescriptor.unwrap(JdbcTimestampTypeDescriptor.java:24)
        at org.hibernate.type.descriptor.sql.TimestampTypeDescriptor$1.doBind(TimestampTypeDescriptor.java:48)
        at org.hibernate.type.descriptor.sql.BasicBinder.bind(BasicBinder.java:74)
        at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:280)
        at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:275)
        at org.hibernate.param.NamedParameterSpecification.bind(NamedParameterSpecification.java:53)
        at org.hibernate.loader.hql.QueryLoader.bindParameterValues(QueryLoader.java:628)
        at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:2001)
        at 
org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1915)
        at org.hibernate.... (show balloon)

я знаю, что он говорит, что не может конвертировать String в java.util.Date, но я не знаю, как ее решить. Спасибо за каждого помощника!

/////////////////////////////////////////////// ////////// ENTITY CLASS

@Entity                                      
@IdClass(StationsMessung.class)
@Table(name = "****", schema = "***")
public class StationsMessung implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "AVNR")
private int AVNR; ////
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "TXNR")
private int TXNR;
@GeneratedValue(strategy = GenerationType.AUTO)
@Temporal(TemporalType.TIMESTAMP)
@Type(type = "date")
@Column(name = "DBTM")
private Timestamp DBTM;

public StationsMessung(int AVNR, int TXNR, Timestamp DBTM) {
    this.AVNR = AVNR;
    this.TXNR = TXNR;
    this.DBTM = DBTM;    
}
public StationsMessung() {
}
public int getAvnr() {
    return AVNR;
}
public void setAvnr(int AVNR) {
    this.AVNR = AVNR;
}
public int getTxnr() {
    return TXNR;
}
public void setTxnr(int TXNR) {
    this.TXNR = TXNR;
}
public Timestamp getDBTM() {
    return DBTM;
}
public void setDBTM(Timestamp DBTM) {
    this.DBTM = DBTM;
}

/////////////////////////////////////////////// //////////// СЕРВИС КЛАСС

@Service
public class StationService {

@PersistenceContext
EntityManager entityManager;


public List<Station> getAllStationMessungen(int AVNR, int TXNR, Timestamp DATUM) { 
return entityManager.createQuery("SELECT b FROM StationsMessung b WHERE b.AVNR=:AVNR AND b.TXNR=:TXNR AND b.DBTM=:DATUM")
            .setParameter("TXNR",TXNR )
            .setParameter("AVNR",AVNR )
            .setParameter("DATUM", DATUM)
            .getResultList();
}

/////////////////////////////////////////////// ///////////// КЛАСС КОНТРОЛЛЕРА

@RestController
@RequestMapping("/station")
public class StationController {
@Autowired //This annotation allows Spring to resolve and inject 
collaborating beans into your bean
StationService stationService; //service

@RequestMapping(value = "/allmessungen/{AVNR}/{TXNR}/{DATUM}", method = 
RequestMethod.GET) 
public List<Station> getAllStationMessungen(@PathVariable int AVNR, int 
TXNR, Timestamp DATUM) {
    return stationService.getAllStationMessungen( AVNR, TXNR, DATUM);
}

теперь, когда я ищу данные без метки времени, он показывает мне данные, он работает.

когда я использую метку времени или дату, это показывает мне ошибку выше.

ВХОД В МЕНЯ ЕСТЬ:

PARAM.1 AVNR: 716

PARAM.2 TXNR: 1339

PARAM.3 DBTM: 2014-01-04 05: 30: 00
(это этот формат гггг-мм-дд-чч24: ми: сс)

спасибо за каждую помощь:)

...