Hibernate 忽略扩展类的 @Table(name = "...") - 创建的表名都是小写的

发布于 2024-12-22 20:52:06 字数 699 浏览 3 评论 0 原文

我们通过 Hibernate 通过分配自动创建表:

@Table(name = "some_table") 

这曾经适用于“正常”实体。但是当我们有一个抽象基类:

@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public class PersonBankAccount extends AbstractPersistable<Long> {

扩展为

@Entity
@Table(name = "person_bank_account")
public class PersonBankAccountSimple extends PersonBankAccount {

数据库中的结果表被命名为

personbankaccount

这里发生了什么?

自动生成器说:

table not found: PersonBankAccount 

第一次创建它并重新运行时,他说:

table found: personbankaccount

就像我说的,对于普通表,一切正常。

We create our tables automaticly via Hibernate by assigning:

@Table(name = "some_table") 

That used to work for "normal" entities. But when we have an abstract base class:

@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public class PersonBankAccount extends AbstractPersistable<Long> {

that is extended by

@Entity
@Table(name = "person_bank_account")
public class PersonBankAccountSimple extends PersonBankAccount {

The resulting table in the database is named

personbankaccount

What is going on here?

The autogenerator says:

table not found: PersonBankAccount 

when first creating it and on rerun he says:

table found: personbankaccount

Like I said, for normal tables everything works fine.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

哭了丶谁疼 2024-12-29 20:52:06

不应该是基类中表的名称。

@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@Table(name = "person_bank_account")
public class PersonBankAccount extends AbstractPersistable<Long> {

Shouldn't be the name of table in the base class instead.

@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@Table(name = "person_bank_account")
public class PersonBankAccount extends AbstractPersistable<Long> {
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文