休眠使用@OneToMany关联中的投影吗?

时间:2019-07-16 15:26:40

标签: hibernate spring-data

如何在(单向)@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

0 个答案:

没有答案