如何只获得多对一的id列?

时间:2016-06-20 09:44:09

标签: hibernate

例如,我有项目实体:

public class Project {
    ...

    @ManyToOne(fetch = FetchType.LAZY, optional = false)
    @JoinColumn(name = "manager_id")
    private User manager;

    @Column(name = "manager_id")
    private Long managerId;

    ...
}

如何在没有延迟加载管理器实体的情况下将列“manager_id”映射到“managerId”属性?

1 个答案:

答案 0 :(得分:0)

  

如何映射列" manager_id"到" managerId"

你不需要这样做。即使对于懒惰的实体,Hibernate已经有manager.id

如果您有懒惰属性,则可以通过以下方式获取标识符:

LazyInitializer initializer = ((HibernateProxy) project.getManager()).getHibernateLazyInitializer();
Long managerId = (Long) initializer.getIdentifier();

请从private Long managerId

中删除Project字段
public class Project {

    @ManyToOne(fetch = FetchType.LAZY, optional = false)
    @JoinColumn(name = "manager_id")
    private User manager;

}

您可以参考更常见的方法:Persistent#getPid()