如何在(单向)@OneToMany
映射上使用投影?
我有一个拥有许多项目的用户。我想使用一个简化的投影(SimpleProject),它会跳过某些字段的加载
@Entity
public class User {
...
@OneToMany
@JoinColumn(name = "user_id")
private List<SimpleProject> projects = new ArrayList<>();
...
public List<SimpleProject> getProjects() {
return projects;
}
}
@Entity
public class Project {
private String id;
private String user_id;
private String description;
}
public interface SimpleProject {
String getId();
String getUserId();
// no getDescription method
}
但这无法在上下文加载时创建映射:
org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: org.my.app.User.projects[org.my.app.SimpleProject]
我可以轻松地在ProjectRepository中使用Projection,但是我也想通过调用user.getProjects()
并接收SimpleProject
表示形式,通过用户的关联来访问它。
我尝试设置@OneToMany(targetEntity = Project.class)
,但是一旦我开始使用该集合,就会导致ClassCastException
。