postgreSQL自定义模式无法识别问题:错误: 关系 “” 不存在

问题背景

这是一个困扰了我有一段时间,让我哭笑不得的一个问题,我现在在做的一个项目用的技术是SpringBoot + JPA + PostgreSQL。
PostgreSQL在安装完成后会有一个默认的模式public,数据的操作也都默认是public,但是因为业务上的划分,我们这边又新创建了一个模式,通过注解@Table(name = “”, schema = “”)进行区分。
但是,在查询的过程中,却报了一个非常奇怪的问题,org.postgresql.util.PSQLException: 错误: 关系 “” 不存在,可事实上模式是存在的,表也是存在的,但是却无法正常查询。

解决问题

后来猜想(猜想的过程真的复杂,自己也是在网上搜了好久都没有搜到答案,即使相关的文章也没有找到),会不会是数据库版本的问题,于是便装了几个不同的版本进行测试。
测试的数据库版本:9.5, 9.6, 10.12
数据库结构如下:
数据库结构
新建了两个模式sa和sb,两个模式下分别有一张表testa和testb。

代码结构如下:
Testa.java:

@Entity
@Table(name = "testa", schema = "sa")
public class Testa implements Serializable {

    /** 
     * serialVersionUID
     */
	private static final long serialVersionUID = -7768637914227571159L;

    /** 
     * uuid
     */
	@Id
	@GeneratedValue(generator = "idGenerator")
	@GenericGenerator(name = "idGenerator", strategy = "uuid")
    @Column(name = "id", nullable = false, length = 64)
    private String id ;
    
    @Column(name = "name", nullable = true, length = 50)
    private String name ;
	
	getter/setter......

}

Testb.java:

@Entity
@Table(name = "testb", schema = "sb")
public class Testb implements Serializable {

    /** 
     * serialVersionUID
     */
	private static final long serialVersionUID = -7768637914227571159L;

    /** 
     * uuid
     */
	@Id
	@GeneratedValue(generator = "idGenerator")
	@GenericGenerator(name = "idGenerator", strategy = "uuid")
    @Column(name = "id", nullable = false, length = 64)
    private String id ;
    
    @Column(name = "name", nullable = true, length = 50)
    private String name ;

	getter/setter......
}

TestController:

@RestController
@RequestMapping("/test")
public class TestController {

	@Autowired
	private TestaRepository testaRepository;
	
	@Autowired
	private TestbRepository testbRepository;
	
	@GetMapping("/testa")
	public List<Testa> testa() {
		List<Testa> findAll = testaRepository.findAll();
		return findAll;
	}
	
	@GetMapping("/testb")
	public List<Testb> testb() {
		List<Testb> findAll = testbRepository.findAll();
		return findAll;
	}
}

结论

经过测试,9.5和10.12版本的postgreSQL都无法正常的识别schema并查询表中的数据,
只有9.6版本的数据库可以正常的查询数据,目前猜测,是数据库版本的问题,但是有一点很是疑惑,为什么,10.12的版本比9.6高,也会出现这种问题?难道不仅仅数据库的原因,JPA的版本也会影响查询结果吗???

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值