gpt4 book ai didi

java - determinePrimaryKeyJoinColumnName() 是否曾在 Hibernate 5 ImplicitNamingStrategy 中使用过?

转载 作者:行者123 更新时间:2023-11-30 10:42:05 24 4
gpt4 key购买 nike

我正在使用 hibernate 5 并实现了 ImplicitNamingStrategy 接口(interface)。在其他方法中,有两种方法称为 determinePrimaryKeyJoinColumnName(...) 和 determineJoinColumnName(...)。在 java 文档中,它说明了 determinePrimaryKeyJoinColumnName:

Determine the column name related to {@link javax.persistence.PrimaryKeyJoinColumn}. In * {@code hbm.xml} terms, this would be a {@code } defined for a {@code } * or a {@code } (others?)

我用 PrimaryKeyJoinColumn 注释了我的连接并且代码有效,但是名称从未通过 determinePrimaryKeyJoinColumnName(...) 路由,而是通过 determineJoinColumnName(...) 路由。

我认为这是一个错误是错误的吗?

最佳答案

@PrimaryKeyJoinColumn 可以像 @JoinColumn 一样使用,仅用于 @OneToOne 映射。在这种情况下,不会使用额外的连接列,当然,也不会生成这种“不存在的列”的名称。

@PrimaryKeyJoinColumn 也可以用于继承。举个例子

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "someDiscriminator")
public class Customer {

@Id
@GeneratedValue
private Long customerPid;

@Column
private String customerName;

}

@Entity
@PrimaryKeyJoinColumn(name = "xxxYY")
public class ValuedCustomer extends Customer {

@Column
private String valuedCustomerName;

}

Hibernate 将使用 xxxYY 作为列名。但是如果你不指定名字

@Entity
@PrimaryKeyJoinColumn
public class ValuedCustomer extends Customer {

@Column
private String valuedCustomerName;

}

}

Hibernate 不会使用 determinePrimaryKeyJoinColumnName() 来生成名称。所以,看起来,这是一个错误。

Hibernate 仅在一处调用 determinePrimaryKeyJoinColumnName() Ejb3JoinColumn.java#L719 .但我不知道在什么情况下会发生这种情况。

我也遇到过这样的问题,当尝试为 Hibernate 5 实现 Hibernate 4 NamingStrategy 的适配器时。您可以引用 ImprovedNamingStrategy for Hibernate 5额外的注释。

我尝试实现 Hibernate 5 Implicit Naming Strategy .

关于java - determinePrimaryKeyJoinColumnName() 是否曾在 Hibernate 5 ImplicitNamingStrategy 中使用过?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38263233/

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