Ich habe, was ich dachte, war eine direkte Beziehung in JPA. Sieht aus wie das. CompanyGroup:PSQLException: Fehler: Syntaxfehler bei oder nahe
@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;
}
Firma:
@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;
}
Benutzer:
@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;
}
Ich habe weggelassen Setter, Getter usw.
Das funktioniert nicht. Ich versuche, eine CompanyGroup (hat 2 Firmen, jedes Unternehmen hat 2 Benutzer, alle Entitäten sind einzigartig) zu einer vollständig leeren Datenbank zu speichern.
I bestehen diese mit Spring-Daten, in einem Dienst wie diese zugegriffen:
@Service
public class ConcreteCompanyGroupService implements CompanyGroupService {
@Autowired
private CompanyGroupRepository repository;
@Transactional
@Override
public void save(CompanyGroup group) {
repository.save(Collections.singleton(group));
}
}
Wenn ich versuche, diese Methode, die ich diese erhalten zu nennen:
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)
Hoffentlich habe ich getan, etwas Dummes das kann jemand schnell finden. Ich weiß nicht, wie ich das lösen soll.
EDIT:
Der Fahrer in meinem pom.xml:
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.4.1211</version>
</dependency>
Scheint so zu sein wie hier: http://stackoverflow.com/questions/3608420/hibernate-saving-user -Modell zu Postgres –