我有以下实体TaskType String id;字符串名称;字符串描述; ...
TaskQueue
String id;
String name;
...
TaskJBPM
long id;
String description;
String status;
String assignedToUser;
int Priority;
...
Task
String id;
String name;
long masterTaskId; // Link to TaskJBPM table
Date expectedStart;
Date expectedEnd
Date scheduledStart;
Date scheduledEnd;
String taskQueueId; // Link to the TaskQueue table
String taskTypeId; // Link to the TaskType table
...
在hibernate条件对象内部,我希望能够使用来自Task和TaskJBPM实体的属性设置限制(例如,criteria.add(Restrictions.eq(“status”,“created”),criteria.add(Restrictions . eq(“name”,“example”);) .
此外,我还想返回Task和TaskJBPM表的所有属性(也可能是TaskType和TaskQueue中的属性) . 两个问题 . 这是否可以使用hibernate条件对象,并且当Task和TaskJBPM包含数千条记录时,性能是否“合理”?有人能告诉我一些示例代码吗?谢谢,弗雷德
1 回答
只有正确设计实体才有可能 . 这意味着Task实体不应该有masterTaskId,taskQueueId和taskTypeId,而是三个(我想)ManyToOne关联:
然后,您将能够在条件查询中使用联接(使用
createAlias()
或createCriteria()
)作为关联,并使用投影从所有实体检索属性 .条件查询将转换为SQL . 它的性能不会比你自己创建的SQL查询差 .