0

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

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 类和 Embeddable 类 CallId

搜索互联网后发生这种情况是因为hibernate需要一个主键所以它自己创建一个

如何确保只生成 1 个类?我如何给视图一个主键(一个好的主键将是基础表的主键之一)。我该如何设置?

4

1 回答 1

1

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

看看这篇文章

于 2011-04-16T09:26:05.827 回答