У меня есть определенный c случай, когда я переопределяю метод Hibernate onLoad()
, и он заполняет параметр propertyNames
некоторым странным свойством.
Предположим, у меня есть следующая сущность Product и сущность Version, которые представляют какая-то версия продукта. Продукт может иметь несколько версий.
Объекты представлены следующим образом:
Продукт:
package some.package.name
@Entity
@Table(name = "product")
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "product_id")
protected Integer id;
@Column(name = "name")
protected String name;
...
}
Версия:
package another.package.name
@Entity
@Table(name = "versions")
public class Version {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "version_id")
private Integer id;
@ManyToOne
@JoinColumn(name = "published_product_name", referencedColumnName = "name")
private Product product;
...
}
Как вы Можно заметить, что используемый здесь внешний ключ является , а не первичным ключом в сущности Product.
Теперь, когда я получаю метод onLoad
с сущностью Product, я получаю следующее propertyNames
:
[
"id",
"name",
"another_package_name_Version_product"
]
Я хотел бы понять, что такое 3-е свойство name и как оно связано с JoinColumn
? (Когда я использовал внешний ключ в качестве первичного ключа, я не получил это третье свойство)