【问题标题】:Hibernate doesn't create one entityHibernate 不会创建一个实体
【发布时间】:2020-11-07 19:25:13
【问题描述】:

我正在尝试使用休眠创建表,但所有实体似乎都映射为表,除了一个。甚至包含该表的 id 的多线程也被创建,而不是表本身。

Service.java

@Entity
@Table(name="service")
public class Service {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="id")
    private int id;

    @Column(name="title")
    private String title;

    @Column(name="description")
    private String desc;

    @Column(name="price")
    private int price;

    @Column(name="limit")
    private int limit;

    @Column(name="status")
    private boolean available;

    @Column(name="tags")
    private String tags;

    @ManyToOne
    @JoinColumn(name="provider_id")
    private User provider;

    @ManyToOne(cascade = {CascadeType.DETACH,CascadeType.MERGE,CascadeType.PERSIST,CascadeType.REFRESH})
    @JoinColumn(name="category_id")
    private Category category;

    @ManyToMany(cascade = {CascadeType.DETACH,CascadeType.MERGE,CascadeType.PERSIST,CascadeType.REFRESH})
    @JoinTable(
            name="service_clients",
            joinColumns = @JoinColumn(name="service_id"),
            inverseJoinColumns = @JoinColumn(name="client_id")
    )
    private List<User> clients;
    //GETTERS,SETTERS
}

如果您需要更多信息,我可以更新帖子。

PS:我的日志中没有任何错误。

【问题讨论】:

  • 您是否尝试将表重命名为“服务”以外的名称? ...也许 service 是一个保留关键字。
  • 已经有自动模式,我还需要编辑我的帖子,因为我确实在我的日志中发现了一个错误:GenerationTarget 遇到异常接受命令:通过 JDBC 语句执行 DDL 时出错
  • 我也已经尝试过重命名表格
  • 你能发布完整的错误信息吗?

标签: java spring hibernate spring-mvc


【解决方案1】:

“limit”是某些数据库的保留关键字。您可以更改属性的名称,也可以手动创建表。

【讨论】:

    【解决方案2】:

    在 Buraks awnser 之上,您可以尝试对列名进行编码:

        @Column(name="\"limit\"")
    

    不幸的是,Hibernate 本身并不能做到这一点,对于许多供应商和关键字(如“订单”、“用户”)来说,它是必需的。

    【讨论】:

      猜你喜欢
      • 2023-03-11
      • 2022-11-22
      • 1970-01-01
      • 1970-01-01
      • 2021-11-06
      • 1970-01-01
      • 1970-01-01
      • 2012-06-04
      • 2011-08-11
      相关资源
      最近更新 更多