Hibernate - createQuery не получает метку времени - PullRequest
1 голос
/ 15 февраля 2012

Среда: Java, провайдер Hibernate JPA, JPA, Oracle DB

Я пытаюсь создать собственный запрос для извлечения данных из базы данных Oracle. Один из столбцов является столбцом даты. Дата извлекается, но отметка времени выходит как 00:00:00. Тем не менее, через браузер SQL, я могу видеть дату и время. Как получить список результатов вместе со временем?

org.hibernate.Query query = ((HibernateEntityManager) entityManager).getSession().
                                     createSQLQuery(NATIVE_QUERY).setResultTransformer(org.hibernate.transform.Transformers.ALIAS_TO_ENTITY_MAP);

query.setString(0, accountNumber);;
query.setTimestamp(1, startDate).setTimestamp(2, endTime);
query.setTimestamp(3, startDate).setTimestamp(4,endTime);
List resultList = query.list();

Сам запрос (в приведенном выше коде - NATIVE_QUERY) является обычным SQL-запросом для: «Получите мне все имена пользователей и время txn в заданном диапазоне дат, будь то новая транзакция или что-то, что изменилось в некоторой форме» ,

выберите u.first_name в качестве firstName, u.last_name в качестве lastName, tx.start_time в качестве txnTime от пользователя u, транзакцию tx, где tx.user_id = u.user_id и tx.account_number =? и (tx.start_time>? и tx.start_time <? или tx.change_time>? и tx.change_time <?) </strong>

for(Object listItem : resultList){
    Map map = (Map) listItem;
    Date txnTime = (Date)map.get("txnTime".toUpperCase()); 
   //--------> NOT FETCHING THE TIME. I get the time as 00:00:00
}

Модель предметной области очень проста

    @Entity
    @Table(name="TRANSACTION")
    @org.hibernate.annotations.Entity(
        dynamicUpdate = true
    )
    public class Transaction{
        @Id
        @SequenceGenerator(name="txn_gen", sequenceName="TXN_S")
        @GeneratedValue(generator="txn_gen")
        @Column(name="TXN_ID")
        private Long txnId;

        @ManyToOne(fetch=FetchType.LAZY)
        @JoinColumn(name="USER_ID", nullable=false)
        private User user;

        @Column(name="START_TIME", nullable=false)
        @Temporal(TemporalType.TIMESTAMP)
        private java.util.Date startTime;

        @Column(name="CHANGE_TIME")
        @Temporal(TemporalType.TIMESTAMP)
        private java.util.Date changeTime;
    }

@Entity
@Table(name="USER")
@org.hibernate.annotations.Entity(
    dynamicUpdate = true
)
public class User {
    @Id
    @SequenceGenerator(name = "user_gen", sequenceName = "USER_S")
    @GeneratedValue(generator = "user_gen")
    @Column(name="USER_ID")
    private Long userId;    

    @Column(length=500, name="FIRST_NAME")
    private String firstName;

    @Column(length=500, name="LAST_NAME")
    private String lastName;
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...