Java Oracle列名问题
我在hibernate中有父子映射,其中实体通过表连接 问题是hibernate在此表中自动创建的列被称为likeJava 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 {
“\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是如何关联的?我应该为子实体指定两列还是只指定两列?