我在休眠中有父子映射,其中实体通过表连接。
问题是这个表中由hibernate自动创建的列被称为like "_actions_id"
。但我使用 Oracle,它说列名"_actions_id"
无效。
当我用 包装名称""
并手动执行脚本时,它工作正常,但是有没有办法让休眠状态用 包装所有列""
?
在您的示例中,您指定了一个连接表,用于这样的场景
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
。
我认为您想要一个自定义NamingStrategy。我明白了。在你的情况下,它会是这样的:
public class MyNamingStrategy extends DefaultNamingStrategy {
public String logicalCollectionColumnName(String columnName, String propertyName, String referencedColumn) {
return "`" + super.logicalCollectionColumnName(columnName, propertyName, referencedColumn + "`";
}
}