gpt4 book ai didi

java - hibernate:使用 Criteria API 进行左外连接,可以吗?

转载 作者:行者123 更新时间:2023-12-01 14:21:22 25 4
gpt4 key购买 nike

我是 Hibernate 的新手,所以请原谅我的平庸,但我找不到与我的问题相关的任何答案(我尝试在文档和 SO 上搜索)。

如果可能的话,我会在不使用 HQL 的情况下从两个表(t0t1)创建左外连接;就我而言,我只想使用 Criteria API。

t0 { id, fieldA, fieldB }

t1 { id, fieldC, fieldD }

我不知道哪些字段将用于连接,用户可以决定。

我发现 Criteria API 有一些不错的函数,例如 createAliascreateCriteria,但如果我使用这些方法,我将无法运行联接。

每个表都有一个类(使用特定的 hbm.xml 映射),如下所示:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping default-access="field">

<class name="it.class.T0" table="t0">
<meta attribute="class-description">Table 0</meta>
<!-- Unique id -->
<id name="id" type="long" column="id">
<generator class="native"/>
</id>
<!-- Natural key -->
<natural-id mutable="true">
<property name="fieldA" type="string" column="fieldA" not-null="true" />
<property name="fieldB" type="string" column="fieldB" not-null="true" />
</natural-id>
<!-- Fields -->
<property name="column1" type="long" column="columnd1" not-null="true" />
<property name="column2" type="string" column="column2" not-null="false" />
</class>

</hibernate-mapping>

实体类是这样的:

public class T0 implements Serializable
{
private static final long serialVersionUID = -8123118569358735984L;

public long id;

public String fieldA;
public String fieldB;
public long column1;
public String column2;

public T0()
{
super();
}
}

是否可以以编程方式(使用 Criteria API)创建左外连接,而无需在 hbm.xml(或在特定的 HQL)中指定要使用的字段?

最佳答案

没有。您不能使用 hibernate api 来基于 hibernate 不了解的映射创建连接。它首先就违背了使用 hibernate 的目的。那为什么不直接写sql呢? ;-)

关于java - hibernate:使用 Criteria API 进行左外连接,可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17529180/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com