0

我在休眠中有父子映射,其中实体通过表连接。

问题是这个表中由hibernate自动创建的列被称为like "_actions_id"。但我使用 Oracle,它说列名"_actions_id"无效。

当我用 包装名称""并手动执行脚本时,它工作正常,但是有没有办法让休眠状态用 包装所有列""

4

2 回答 2

1

在您的示例中,您指定了一个连接表,用于这样的场景

People table:
PID | Name
1   | Albert
2   | Bob


TelephoneNumbers table:
TID | Tel
1   | 123-456
2   | 456-789
3   | 789-012

Join table:
PID | TID
1   | 1
1   | 2
2   | 3

即,将当前实体连接到集合中的实体的列既不在当前表中,也不在集合实体的表中。这对于多对多映射更有用,但如果您无法控制TelephoneNumbers表,也可以将其用于 OneToMany。否则你应该只使用 plain @JoinColumn

@JoinTable许多网站已经多次解释了的用法。请参阅JavaDoc这个问题

于 2012-06-05T00:40:35.947 回答
0

我认为您想要一个自定义NamingStrategy。我明白。在你的情况下,它会是这样的:

public class MyNamingStrategy extends DefaultNamingStrategy {
    public String logicalCollectionColumnName(String columnName, String propertyName, String referencedColumn) {
        return "`" + super.logicalCollectionColumnName(columnName, propertyName, referencedColumn + "`";
    }
}
于 2012-06-04T23:09:51.043 回答