假设有二个方案名,schema1,schema2。
schema1方案名登录后,有二个表A,B
schema2方案名登录后,没有表。
设置schema2拥有访问schema1表A,B的读取权限。
schema2能通过select * from schema1.A访问表A。通过select * from A 出错,表不存在。
现在domain中域对象没有指定schema属性,并hibernate.cfg.xml指定hibernate自动建表设置。
当使用schema2方案名设为hibernate的登录用户。
启动后,通过hibernate执行HQL语句,查询表A ,结果查询不到数据。
原因是schema2启动hibernate后,hibernate自动建表为schema2建立了两张表schema2.A和schema2.B,hibernate默认的执行登录用户的方案,hibernate执行过程中也正是查询了schema2创建的表,没有数据,所以查询不到数据。
问题的原因就是domain中没指定方案名。
domain注释可以改成:@Table(name = "A",schema="schema1")