У меня есть сущность:
@Entity
@Table(name = "story", schema = "")
@Data
public class Story implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "sID", unique = true, nullable = false)
private Long sID;
@Column(name = "vnName", nullable = false)
private String vnName;
@Temporal(TemporalType.TIMESTAMP)
@DateTimeFormat(pattern = "dd-MM-yyyy HH:mm:ss")
@Column(name = "sUpdate", length = 19)
private Date sUpdate;
}
И:
@Entity
@Table(name = "chapter", schema = "")
@Data
public class Chapter implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "chID", unique = true, nullable = false)
private Long chID;
@Column(name = "chName", nullable = false)
private String chName;
@JoinColumn(name = "sID", referencedColumnName = "sID")
@ManyToOne(fetch = FetchType.LAZY)
private Story story;
}
Я создал пользовательский pojo, чтобы получить последнюю историю обновлений с последней главой:
@Data
public class NewStory{
private Story story;
private Chapter chapter;
}
но когда я получаю список:
@Repository
public interface StoryRepository extends CrudRepository<Story, Long> {
@Query(value="SELECT NEW com.apt.truyenmvc.entity.NewStory(s as newstory, c as newchapter)"
+ " FROM story s LEFT JOIN (SELECT * FROM Chapter c INNER JOIN "
+ " (SELECT MAX(c.chID) AS chapterID FROM Story s LEFT JOIN Chapter c ON s.sID = c.sID GROUP BY s.sID) d"
+ " ON c.chID = d.chapterID) c ON s.sID = c.sID order by s.sUpdate desc")
public List<NewStory> getTopView();
}
Ошибка:
Warning error: org.hibernate.hql.internal.ast.QuerySyntaxException: story is not mapped.
Кто мог бы помочь мне это исправить?Или это может быть сделано по-другому?