java – PSQLException:错误:语法错误在或附近
发布时间:2020-12-14 23:35:28 所属栏目:Java 来源:网络整理
导读:我认为JPA是一个直接的关系.看起来像这样. CompanyGroup: @Entity@Tablepublic class CompanyGroup implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue private Long id; @Column(name = "name") private St
我认为JPA是一个直接的关系.看起来像这样. CompanyGroup:
@Entity @Table public class CompanyGroup implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue private Long id; @Column(name = "name") private String name; @JoinColumn(name = "companies") @OneToMany(fetch = FetchType.EAGER,cascade = CascadeType.ALL) private List<Company> companies; } 公司: @Entity @Table public class Company implements Serializable { private static final long serialVersionUID = 1L; @Column(name = "name") private String name; @JoinColumn(name = "users") @OneToMany(fetch = FetchType.EAGER,cascade = CascadeType.ALL) private List<User> users; @Id @GeneratedValue private Long id; } 用户: @Entity @Table public class User { @Column(name = "firstName") private String firstName; @Column(name = "lastName") private String lastName; @Column(name = "email") private String email; @Id @GeneratedValue private Long id; } 我省略了setter,getters等. 这不起作用.我正在尝试将一个CompanyGroup(有2个公司,每个公司有2个用户,所有实体都是唯一的)保存到一个完全空的数据库. 我坚持使用Spring-Data,在这样的服务中访问: @Service public class ConcreteCompanyGroupService implements CompanyGroupService { @Autowired private CompanyGroupRepository repository; @Transactional @Override public void save(CompanyGroup group) { repository.save(Collections.singleton(group)); } } 当我尝试调用此方法时,我会收到: org.postgresql.util.PSQLException: ERROR: syntax error at or near "User" Position: 13 at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2458) at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2158) at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:291) 希望我做了一些愚蠢的事情,有人可以很快找到.我不知道如何解决这个问题. 编辑: 我的pom.xml中的驱动程序: <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <version>9.4.1211</version> </dependency> 解决方法
您的实体映射到表名称,该表名称是SQL保留关键字(用户).遗憾的是,您选择的JPA提供程序不会自动引用表名标识符,因此在引用该表时会出现异常.
解决方案是在@Table注释中自己引用表名,或者将表名更改为不是保留关键字.或者使用JPA提供程序为您自动引用此类保留关键字(例如DataNucleus) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |