【发布时间】:2015-03-25 02:56:50
【问题描述】:
我有一个命名查询,它为对我的 Sybase 15 数据库的调用生成交叉连接。我想我需要重新格式化我的查询以使用连接,但无法弄清楚所需的语法。对象及其映射如下
工作流定义
@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = "workflow_type_id", nullable = false)
private WorkflowType workflowType;
工作流实例
@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@Fetch(FetchMode.SELECT)
@JoinColumn(name = "workflow_def_id", nullable = false, updatable = false)
private WorkflowDef workflowDef;
我的命名查询是
@NamedQuery(name = "WorkflowInstance.hasStatus", query = "SELECT wi.id FROM WorkflowInstance wi WHERE wi.deal.id = :dealId AND wi.workflowDef.workflowType.systemKey = :wfTypeName AND wi.status IN (:statuses)")
这会引发错误
2015-01-26 16:27:24,237 DEBUG [http-8080-3] util.SQLStatementLogger -
select
workflowin0_.wf_instance_id as col_0_0_
from
tbl_wf_instance workflowin0_ cross
join
tbl_workflow_def workflowde1_ cross
join
tbl_lkp_workflow_type workflowty2_
where
workflowin0_.workflow_def_id=workflowde1_.workflow_def_id
and workflowde1_.workflow_type_id=workflowty2_.workflow_type_id
and workflowin0_.deal_id=?
and workflowty2_.name=?
and (
workflowin0_.status in (
?
)
)
2015-01-26 16:27:24,238 TRACE [http-8080-3] type.NullableType - 将“60001972”绑定到参数:1 2015-01-26 16:27:24,239 TRACE [http-8080-3] type.NullableType - 将“CREDIT”绑定到参数:2 2015-01-26 16:27:24,240 调试 [http-8080-3] type.EnumType - 将“2”绑定到参数:3 2015-01-26 16:27:24,277 警告 [http-8080-3] util.JDBCExceptionReporter - SQL 错误:102,SQLState:42000 2015-01-26 16:27:24,278 错误 [http-8080-3] util.JDBCExceptionReporter - 'cross' 附近的语法不正确。
我在我的持久性单元中使用以下内容
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="showSql" value="false"/>
<property name="databasePlatform" value="org.hibernate.dialect.SybaseASE15Dialect"/>
</bean>
</property>
谁能告诉我哪里出错了?
【问题讨论】:
-
那里有生成的 SQL。您是否尝试过直接针对数据库执行它?尝试更多地了解查询到底出了什么问题。 (我没有 Sybase 15 专业知识来自动知道查询出了什么问题。)这可能会让您对需要做什么有所了解。
-
您好 dcsohl,问题是 sybase 不接受交叉连接语法。我相信这是一个已知问题,但更大的问题是这不应该是交叉连接/完全外部连接,所以我想我有
-
...我的映射或命名查询语法有问题
标签: java hibernate jpa-2.0 jpql named-query