gpt4 book ai didi

java - 使用 Hibernate 在 CollectionTable 的列上创建索引

转载 作者:搜寻专家 更新时间:2023-11-01 00:58:27 25 4
gpt4 key购买 nike

假设我有以下实体,它为订阅者建模并使用 CollectionTable 来为订阅列表建模,如下所示:

@Entity
@Table(name = "SUBSCRIBER")
public class Subscriber {
@ElementCollection
@CollectionTable(name = "PERSON_ORG_SUBSCRIPTIONS",
joinColumns = { @JoinColumn( name = "PERSON_ID", referencedColumnName = "PERSON_ID" ),
@JoinColumn( name = "ORG_ID", referencedColumnName = "ORG_ID" ) } )
@Column(name = "SUBSCRIPTION_NAME")
protected Set<String> _subscriptionNames;
}

因此,这将创建一个包含 PERSON_IDORG_IDSUBSCRIPTION_NAME 列的表。

我正在尝试在 SUBSCRIPTION_NAME 列上创建数据库索引。但是,如果我将以下注释放在 _subscriptionNames 上:

@org.hibernate.annotations.Index( name="subscription_idx", columnNames={"SUBSCRIPTION_NAMES"} )

我得到一个异常(exception):

org.hibernate.MappingException: Unable to find logical column name from physical name null in table SUBSCRIBER

我还尝试在 Subscriber 实体上使用 org.hibernate.annotations.Table 注释,但似乎没有办法让它引用 PERSON_ORG_SUBSCRIPTIONS 表。

我正在使用 Hibernate 3.5.3 和 PostgreSQL 9.0。

最佳答案

SUBSCRIBER 表中是否存在名称为“SUBSCRIPTION_NAME”的列?

您是否打算通过代码在表上创建索引?你应该适本地使用 hibernate.hbm2ddl.auto=create

关于java - 使用 Hibernate 在 CollectionTable 的列上创建索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4412960/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com