Я использую JPA с Spring Data,Могу ли я запросить объект в JPA
Have события класса, который имеет поле UserDetail createdBy
, я хочу запросить событие, которое созданное указанным пользователем. Вот мой запрос
@Query("SELECT e FROM event WHERE e.created_by = :userdetail")
Collection<Event> getEventsCreatedByUser(@Param("userdetail")UserDetail user);
Когда я запускаю тесты с этим запросом в классе Dao я получаю сообщение об ошибке org.hibernate.hql.internal.ast.QuerySyntaxException: event is not mapped [SELECT e FROM event WHERE e.created_by = :userdetail]
Вот класс сущностей, то CREATED_BY в BaseEntityAudit, я тестировал класс User, который также расширяет BaseEntityAudit и он работал нормально, также pgadmin показывает, что столбец CreatedBy существует в таблице событий
@Entity
@Table(name = "Event")
@AttributeOverride(name = "id", column = @Column(name = "event_id",
nullable = false, columnDefinition = "bigserial"))
public class Event extends BaseEntityAudit {
@Embedded
private Point point;
@OneToMany(cascade = CascadeType.ALL)
@JoinTable(name = "event_comments")
private Collection<Comment> comments = new ArrayList<Comment>();
@OneToMany
@JoinTable(name = "\"users_tagged_at_event\"")
private Collection<UserDetail> usersTagged = new ArrayList<UserDetail>();
public Event(UserDetail createdBy, Point point) {
super();
this.point = point;
setCreatedBy(createdBy);
}
также BaseEntityAudit
public abstract class BaseEntityAudit extends BaseEntity {
@Column(name = "created_at")
@Temporal(TemporalType.TIMESTAMP)
private Date createdAt;
@Column(name = "created_by", length = 20)
private UserDetail createdBy;
@Column(name = "updated_at")
@Temporal(TemporalType.TIMESTAMP)
private Date updatedAt;
@Column(name = "updated_by", length = 20)
private UserDetail updatedBy;
//geters/setters ...
/**
* Sets createdAt before insert
*/
@PrePersist
public void setCreationDate() {
this.createdAt = new Date();
}
/**
* Sets updatedAt before update
*/
@PreUpdate
public void setChangeDate() {
this.updatedAt = new Date();
}
}
UPDATE
Caused by: java.lang.IllegalArgumentException: org.hibernate.QueryException: could not resolve property: created_by of: home.map.events.entity.Event [SELECT e FROM home.map.events.entity.Event e WHERE e.created_by = :userdetail]
Опубликовать сущность класса 'event'. –
У вас нет поля "created_by" ... у вас есть "createdBy" !!! –
@NeilStockton уже сделал это при обновлении ... –