我正在使用hibernate增量策略在我的实体上创建我的ID。
@GenericGenerator(name="increment-strategy", strategy="increment")
@Id @GeneratedValue(generator="increment=strategy")
@Column(name="HDR_ID", unique=true, nullable=false)
public int getHdrId(){
return this.hdrId;
}
实体具有以下表格注释
@Table(name = "PORDER.PUB.PO_HEADER", schema = "UVOSi", catalog = "VIRT_UVOS")
请注意我有两个数据源。
当我尝试插入实体时,Hibernate会创建以下SQL语句: 从PORDER.PUB.PO_HEADER中选择max(hdr_id) 导致以下错误:指定的组不明确,请通过完全限定组名重新提交查询。
当我使用entityManager.createQuery()手动创建查询时 hibernate使用完全限定名称
select XXX from VIRT_UVOS.UVOSi.PORDER.PUB.PO_HEADER
并且工作正常。 那么如何让Hibernate在Id自动生成中使用完全限定名?
顺便说一下。我正在使用在JBoss 4.2.3上运行的Hibernate 3.2和Seam 2.2
此致
IMMO
答案 0 :(得分:0)
我认为在使用catalog
策略时,Hibernate应该尊重schema
的{{1}}和@Table
属性。这可能是一个错误,我在Hibernate Annotations的Jira中找不到任何内容。我会提出一个问题。
更新:实际上,我刚刚注意到JPA 2.0在schema
注释中引入了新的catalog
和@SequenceGenerator
属性。因此,我不确定从JPA 1.0提供程序可以期待什么(我最初假设JPA提供程序应该使用increment
注释中的信息可能是错误的),规范并不清楚(或者我找不到这些信息。)