You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Spring Boot JPA中@ManyToMany关联表指定Schema

解决JPA自动生成关联表未指定Schema的问题

针对你遇到的PostgreSQL下JPA自动生成的user_roles关联表未指定Schema导致的报错,有两种可行的解决方式:

方式一:全局配置默认Schema

在Spring Boot配置文件中指定Hibernate的默认Schema,所有自动生成的表(包括关联表)都会默认使用该Schema。

application.properties配置:

spring.jpa.properties.hibernate.default_schema=test

application.yml配置:

spring:
  jpa:
    properties:
      hibernate:
        default_schema: test

方式二:手动指定关联表的Schema

在User实体类的roles字段上添加@JoinTable注解,明确指定关联表的Schema、表名及关联字段:

修改后的User实体类代码:

@Entity
@Table(schema = "test")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {

    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String username;
    private String password;
    private String group_id;
    private String email;
    
    @ManyToMany(fetch = FetchType.EAGER)
    @JoinTable(
        schema = "test",
        name = "user_roles", // 可自定义表名,默认即为user_roles
        joinColumns = @JoinColumn(name = "user_id"),
        inverseJoinColumns = @JoinColumn(name = "role_id")
    )
    private Collection<Role> roles = new ArrayList<>();
}

两种方式均可解决问题:方式一适合所有表共用同一Schema的场景,方式二更灵活,可针对单个关联表单独配置。

内容的提问来源于stack exchange,提问作者m3k_1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 16:20:32