java - FetchType EAGER 在 Windows/MySQL 5.7 中不起作用
问题描述
在一个使用 Hibernate 的 Java 项目中,我很难让 FetchType EAGER 在我的开发数据库上工作,该数据库在 Windows 10 下运行并使用 MySQL 5.7(我也尝试过 MySQL 8)。
奇怪的事实是,当我使用完全相同的数据库结构和数据(从一台机器转储并导入另一台机器)运行完全相同的代码时,它确实可以在 Centos 7/MySQL 5.6 环境中运行。如果我在我的 Windows 机器上运行代码但连接到 Centos 数据库,它也可以工作。如果我在连接到 Windows 数据库的 Centos 机器上运行代码,它就不起作用。
Hibernate 的版本是 5.4.10。
请在下面找到我使用的代码(属性、变量和表的名称已更改,因此可能存在一些错误输入):
实体:
@Entity
@SQLInsert(sql="INSERT IGNORE INTO table1(t2_id,t3_id,order) VALUES(?,?,?)")
public class Table1 implements Serializable
{
//----------------------------------------------------
/*
Attributes / fields definitions :
*/
public Table2 t2;
public Table3 t3;
public Integer order;
//---------------------------------
// STATIC FACTORIES
//---------------------------------
//----------------------------------------------------
/**
Get the list of relations between table2 and table3
*/
static public ArrayList<Table1> find
(
Session inSession,
Table3 inTable3
)
{
TypedQuery< Table1 > vQuery = inSession.createQuery( "SELECT t1 FROM Table1 t1 WHERE t1.t3 = :int3", Table1.class );
vQuery.setParameter( "int3", inTable3 );
return new ArrayList<>( vQuery.getResultList() );
}
}
XML:
<?xml version = "1.0" encoding = "utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"hltp://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="..." default-access="field">
<class name = "Table1" table = "table1" dynamic-update="true">
<meta attribute = "class-description">
...
</meta>
<composite-id>
<key-many-to-one name="t2" class="Table2" column="t2" lazy="false"/>
<key-many-to-one name="t3" class="Table3" column="t3" lazy="false"/>
</composite-id>
<property name = "order" column = "order" not-null="true"/>
</class>
</hibernate-mapping>
工厂电话:
ArrayList< Table1 > vRelations = Table1.find( fDbSession, t3 );
在 Centos 数据库上,它就像一个魅力,我得到我的 Table1 元素,其中包含初始化的 Table2 和 Table3 元素。在 Windows 数据库中,我得到的只是一个“HibernateProxy”元素。
解决方案
推荐阅读
- mysql - node-mysql:多语句查询,ER_PARSE_ERROR
- c++ - 通过引用传递 std::string_view
- c# - 如何在 C# 中的图形 (zedgraph) 中绘制字典 (KeyValuePair)
- r - e1071::svm() 中的总准确度
- c# - 单元测试 uwp 项目中的参数计数不匹配
- javascript - 在画布上绘图 - 不遵循鼠标路径
- excel - 循环遍历单元格以识别是否选择了数据验证列表
- ruby - 为什么代码动态常量赋值Ruby有错误
- python - How to click a span text using selenium Python
- react-native - 使用 rn-fetch-blob react native 将视频上传到服务器