Java 如何添加一个“;关于;关于休眠标准的条款?

Java 如何添加一个“;关于;关于休眠标准的条款?,java,hibernate,join,Java,Hibernate,Join,我阅读了许多类似上面的示例代码,这里的条件连接了两个表,父表和子表,但我不知道如何/在何处指定条件上的On条件 像下面这样 DetachedCriteria criteria = DetachedCriteria.forClass(Parent.class,"parent"); criteria.createAlias("parent.child","thechild"); criteria.add(Restrictions.eq("thechild.property", "somevalue"

我阅读了许多类似上面的示例代码,这里的条件连接了两个表,父表和子表,但我不知道如何/在何处指定条件上的On条件

像下面这样

DetachedCriteria criteria = DetachedCriteria.forClass(Parent.class,"parent");
criteria.createAlias("parent.child","thechild");
criteria.add(Restrictions.eq("thechild.property", "somevalue");
但是在上面的标准中,我无法找到在条件上添加
的位置。我应该在hibernate配置文件中设置它吗?可以在查询中设置吗


合并后,如何获取两个表中所有字段的内容?创建一个包含两个表中所有字段的新类?

您不需要指定要连接的字段,因为它已在表映射中指定。例如:

select * from parent inner join child on parent.childid = child.id

您不需要指定要连接的字段,因为它已在表映射中指定。例如:

select * from parent inner join child on parent.childid = child.id

“createAlias”是对“on”子句的添加。生成SQL时,别名转换为join子句。查询将返回父对象的列表。不要真正遵循“从两个表中获取所有数据”的意思。您将有一个包含子对象的父对象列表。所有数据都以您映射它的方式表示。如果您希望以其他方式表示它,那么您可能需要创建一个具有所需特定数据的新对象

这导致了对性能的忽视,有时您会看到有人剪切并粘贴一个“标准”标准,创建每个可能的别名,然后添加他们需要的限制。别这样!只要执行“createAlias”,无论您以后是否使用该别名,SQL中都会有一个连接。(取决于您使用的数据库的版本,这可能不是什么大问题)

'createAlias'是对'on'子句的添加。生成SQL时,别名转换为join子句。查询将返回父对象的列表。不要真正遵循“从两个表中获取所有数据”的意思。您将有一个包含子对象的父对象列表。所有数据都以您映射它的方式表示。如果您希望以其他方式表示它,那么您可能需要创建一个具有所需特定数据的新对象

这导致了对性能的忽视,有时您会看到有人剪切并粘贴一个“标准”标准,创建每个可能的别名,然后添加他们需要的限制。别这样!只要执行“createAlias”,无论您以后是否使用该别名,SQL中都会有一个连接。(取决于您使用的数据库的版本,这可能不是什么大问题)