Hibernate Criteria 不向表中添加模式
Posted
技术标签:
【中文标题】Hibernate Criteria 不向表中添加模式【英文标题】:Hibernate Criteria do not add schema to table 【发布时间】:2018-01-31 16:06:12 【问题描述】:我有三个表 device 、 vehicle 和 vehicle_device 所有表都在一个模式 'tcm' 中,我正在尝试通过 'device imei' 获取 'vehicle' 。在 Vehicle.class 我有字段“设置设备”并创建映射:
Vehicle.hbm.xml
<hibernate-mapping package="hibernate.entity">
<class name="Vehicle" table="vehicles" schema="tcm">
<id name="id" type="integer" column="id">
<generator class="sequence">
<param name="sequence">tcm.vehicles_id_seq</param>
</generator>
</id>
.
.
.
<set name="devices" table="vehicle_device"
inverse="false" lazy="true" fetch="select" cascade="all" >
<key>
<column name="vehicle_id" not-null="true" />
</key>
<many-to-many entity-name="hibernate.entity.Device">
<column name="device_id" not-null="true" />
</many-to-many>
</set>
</class>
当执行条件以获取所需“设备 imei”的结果时
@Override
public Vehicle getVehicleByDeviceImei(String imei)
Criteria criteria = getSession().createCriteria(Vehicle.class);
criteria.createAlias("devices", "devices").add(Restrictions.eq("devices.imei", imei));
Vehicle v = (Vehicle) criteria.uniqueResult();
return v;
除了生成的查询没有在第一个内部连接中为链接表“vehicle_device”添加架构“tcm”之外,一切都很好
select .
.
.
.
from
tcm.vehicles this_
inner join
vehicle_device devices3_
on this_.id=devices3_.vehicle_id
inner join
devices devices1_
on devices3_.device_id=devices1_.id
where
devices1_.device_imei=?
并且有一个错误: 错误:关系“vehicle_device”不存在 第 17 行:vehicle_device devices3_
如果我将手动模式添加到生成的查询 --> 'tcm.vehicle_device' 它可以工作。 如何修复我的配置,以便 Hibernate Criteria 添加表“vehicle_device”的架构。
【问题讨论】:
你能分享你的hibernate-configuration
cfg 文件吗?
【参考方案1】:
我解决问题。我刚刚在映射的 set 标记中添加了 scheme = 'tcm'
【讨论】:
以上是关于Hibernate Criteria 不向表中添加模式的主要内容,如果未能解决你的问题,请参考以下文章
hibernate.jpa.criteria.BasicPathUsageException:无法加入基本类型的属性