我有一个名为Loadout的表,没有有一个名为ProductName的列。但是hibernate xml有它,因为我需要从另一个表中获取它以用于显示目的。
Loadout.hbm.xml有一个名为productName的属性,即insert="false"
和update="false".
当调用session.merge()
时,hibernate调用select查询,并在该查询期间发出以下错误。
休眠: 选择 loadout0_.ID为ID225_0_, loadout0_.NAME为NAME225_0_, loadout0_.PRODUCT_ID为PRODUCT3_225_0_, loadout0_.LOCATION_ID为LOCATION4_225_0_, loadout0_.LOADOUT_LOADING_TIME_ID为LOADOUT5_225_0_, loadout0_.TIME_SLOTS为TIME6_225_0_, loadout0_.PRODUCT_NAME为PRODUCT7_225_0_ 从 ETHANOL.LOADOUT loadout0_ 哪里 loadout0_.ID =?
2015-07-14 19:28:31,410 WARN [org.hibernate.util.JDBCExceptionReporter]> SQL错误:904,SQLState: 42000 2015-07-14 19:28:31,410错误 [org.hibernate.util.JDBCExceptionReporter] ORA-00904: " LOADOUT0 _"。" PRODUCT_NAME":无效标识符
2015-07-14 19:28:31,412错误 [shipxpress.ethanol.server.location.web.LocationLoadoutSupport] org.hibernate.exception.SQ LGrammarException:无法加载 实体:[shipxpress.ethanol.server.scheduling.domain.Loadout#27]
这是hbm配置文件。
<id name="id" column="ID">
<generator class="sequence">
<param name="sequence">ETHANOL.LOADOUT_SEQ</param>
</generator>
</id>
<property name="name" column="NAME" />
<property name="productId" column="PRODUCT_ID" />
<property name="locationId" column="LOCATION_ID" />
<property name="loadoutLoadingTimeId" column="LOADOUT_LOADING_TIME_ID" />
<property name="timeSlots" column="TIME_SLOTS" update="false" insert="false" />
<!-- The following property is causing the issue -->
<property name="productName" column="PRODUCT_NAME" update="false" insert="false" />
表格的SQL
CREATE TABLE "ETHANOL"."LOADOUT"
( "ID" NUMBER,
"NAME" VARCHAR2(100 BYTE),
"PRODUCT_ID" NUMBER,
"LOCATION_ID" NUMBER,
"LOADOUT_LOADING_TIME_ID" NUMBER
);
ALTER TABLE "ETHANOL"."LOADOUT" ADD PRIMARY KEY ("ID");