Java Oracle列名问题

Java Oracle列名问题,java,oracle,hibernate,Java,Oracle,Hibernate,我在hibernate中有父子映射,其中实体通过表连接 问题是hibernate在此表中自动创建的列被称为like“\u actions\u id”。但是我使用Oracle,它说列名“\u actions\u id”无效 当我用“包装名称并手动执行脚本时效果很好,但是有没有办法让hibernate用”包装所有列?我想您需要一个自定义。我明白了。在您的情况下,它将类似于: public class MyNamingStrategy extends DefaultNamingStrategy {

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

问题是hibernate在此表中自动创建的列被称为like
“\u actions\u id”
。但是我使用Oracle,它说列名
“\u actions\u id”
无效

当我用
包装名称并手动执行脚本时效果很好,但是有没有办法让hibernate用
包装所有列?

我想您需要一个自定义。我明白了。在您的情况下,它将类似于:

public class MyNamingStrategy extends DefaultNamingStrategy {
    public String logicalCollectionColumnName(String columnName, String propertyName, String referencedColumn) {
        return "`" + super.logicalCollectionColumnName(columnName, propertyName, referencedColumn + "`";
    }
}

在您的示例中,您指定了一个连接表,该表适用于以下场景

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
即,将当前实体连接到集合中实体的列既不在当前表中,也不在集合实体的表中。这对于多对多映射更有用,但如果您无法控制
电话号码
表,也可以将其用于OneToMany。否则,您应该只使用普通的
@JoinColumn


许多网站多次解释了
@JoinTable
的用法。请参阅和。

是否必须依赖默认名称?如果没有,则可以使用
joinColumns
注释属性指定名称,并在数据库中手动创建列。你也可以在属性中加引号。你能举一个最简单的例子吗?name和referencedColumnName是如何关联的?我应该为子实体指定两列还是只指定两列?