【问题标题】:hibernate define class from multiple columns in multiple tables休眠从多个表中的多个列定义类
【发布时间】:2011-04-16 09:18:33
【问题描述】:

我有一个包含一些数据字段的类:

class Call{
roomId
roomDisplay
roomLocation
typeId
name
staffAidId
}

现在我想在 java 中使用 hibernate 注释来映射它 但我使用的原始 sql 查询是这样的:

SELECT 
    c.roomId, 
    r.display, 
    r.location, 
    c.typeId, 
    c.staffAidId, 
    s.firstname,
  s.lastname
FROM callalert c 
JOIN staffmember s  
LEFT JOIN roomGroup g ON g.groupId = s.roomGroupId 
LEFT JOIN room r ON r.roomId = g.roomId
WHERE s.staffId = 4444 AND c.roomId = g.roomId 

有没有办法映射这个 换句话说: 有没有办法将不同表中的列映射到 1 个自定义类? 该类不是 1 个表的直接表示 并且从涉及的所有表中,并非所有列都被使用

编辑

我尝试了视图解决方案:

使用上述查询创建了一个视图 然后我尝试使用 Netbeans 生成休眠类 我生成了2个类: 类 Calls 和一个可嵌入类 CallId

在网上搜索后会出现这种情况,因为 hibernate 需要一个主键,所以它自己创建了一个

如何确保只生成 1 个类? 如何为视图提供主键(一个好的主键将是基础表的主键之一)。这个怎么设置?

【问题讨论】:

    标签: sql hibernate annotations hql pojo


    【解决方案1】:

    如果您为该查询创建数据库视图,您应该能够做到这一点。它可以工作,但它的缺点是您无法从数据库模型中自动生成 ddl 架构。

    看看这个article

    【讨论】:

    • 更严重的是该类不能用于更新数据库中的代码,除非视图本身是可更新的。
    • 我试过了,但它会生成 2 个类:检查“编辑”后的第一篇文章
    猜你喜欢
    • 2015-05-23
    • 2016-03-06
    • 2012-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多