2016-03-06 3 views
0

Я хочу получить все события, происходящие в определенную дату, но я не могу заставить его работать.Ищите объект даты в базе данных

Event buffer_event = Event.find.where().like("date",new_date).findUnique(); 

Здесь new_date - обычный объект с датой 03/03/2016 09:00. Но я получаю сообщение об ошибке, когда пытаюсь запустить эту строку.

java.util.Date cannot be converted to java.lang.String 

Так что я попытался его со строкой:

Event buffer_event = Event.find.where().like("date", "03/03/2016 09:00").findUnique(); 

Но я получаю сообщение об ошибке, а также:

[PersistenceException: Query threw SQLException:Cannot parse "TIMESTAMP" constant "Thu Mar 03 09:00:00 CET 2016"; SQL statement: select t0.id c0, t0.name c1, t0.date c2, t0.user_id c3 from event t0 where t0.date like ? [22007-187] Bind values:[Thu Mar 03 09:00:00 CET 2016] Query was: select t0.id c0, t0.name c1, t0.date c2, t0.user_id c3 from event t0 where t0.date like ? ] 

Так как же я получаю все события в этот день из моего база данных?

EDIT:

@Entity 
public class Event extends Model { 

@Id 
public Long id; 

public String name; 

@Formats.DateTime(pattern="dd/MM/yyyy HH:mm") 
public Date date; 

@ManyToOne() 
public User user; 


public Event (String name, Date date) { 
    this.name = name; 
    this.date = date; 
} 

public String getName() { return name; } 

public void setName(String name) { this.name = name; } 

public Date getDate() { return date; } 

public void setDate(Date date) { this.date = date; } 

public static Model.Finder<Long,Event> find = new Model.Finder<Long,Event>(Long.class, Event.class); 
} 

Вот мой класс событий.

# --- Rev:1,Ups - df1003e 

create table event (

id      bigint not null, 

name      varchar(255), 

date      timestamp, 

user_id     bigint, 

constraint pk_event primary key (id)) 

; 



create table user (

id      bigint not null, 

email      varchar(255), 

password     varchar(255), 

role      varchar(255), 

firstname     varchar(255), 

lastname     varchar(255), 

constraint pk_user primary key (id)) 

; 



create sequence event_seq; 



create sequence user_seq; 



alter table event add constraint fk_event_user_1 foreign key (user_id) references user (id) on delete restrict on update restrict; 

create index ix_event_user_1 on event (user_id); 
+0

Отправьте свой класс 'Event' и DDL для таблицы событий. – marcospereira

+0

Я отредактировал исходное сообщение. Спасибо за ваше время. – Ihara

ответ

1

Прежде всего, вы, вероятно, следует использовать .eq вместо .like дат. Для запроса вы пытались передать объект DateTime в запрос? Что-то вроде этого (непроверено):

 
DateTimeFormatter formatter = DateTimeFormat.forPattern("dd/MM/yyyy HH:mm"); 
DateTime dt = formatter.parseDateTime("03/03/2016 09:00"); 

Event buffer_event = Event.find.where().eq("date", dt).findUnique(); 
+1

Вот и все, что мне нужно было сделать, это использовать .eq. Спасибо за ваш ответ, я все еще новичок в игре. – Ihara