Hallo zusammen,
ich habe gerade ein Problem im Umgang mit JPA / Hibernate in Verwendung mit der Derby DB.
Der Beispielaufbau ist wie folgt: Es gibt Benutzer und Ordner. Benutzer können auf Ordner berechtigt werden mit den Benutzerrechten UPLOAD, DOWNLOAD und BOTH, welche in einem enum stecken.
Die Objekte habe ich folgendermaßen aufgebaut:
Versuche ich nun, einen neuen Ordner ohne Berechtigungszuordnungen zu speichern, fliegt eine Exception:
Meine Fragen wären nun:
Vielen Dank im Voraus!
ich habe gerade ein Problem im Umgang mit JPA / Hibernate in Verwendung mit der Derby DB.
Der Beispielaufbau ist wie folgt: Es gibt Benutzer und Ordner. Benutzer können auf Ordner berechtigt werden mit den Benutzerrechten UPLOAD, DOWNLOAD und BOTH, welche in einem enum stecken.
Die Objekte habe ich folgendermaßen aufgebaut:
Java:
@Entity
@Table(name = "T_FOLDER_USER_REL")
public class FolderUserRelDO implements Serializable {
@Id
private Long userId;
@Id
private Long folderId;
@Id
@Enumerated(EnumType.STRING)
private AccessRight right;
// Constructor, getter, setter ausgelassen
Java:
@Entity
@Table(name="T_USER")
public class UserDO implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
@Column(nullable = false)
private String login;
@Column(nullable = false)
private String password;
// Constructor, getter, setter ausgelassen
Java:
@Entity
@Table(name = "T_FOLDER")
public class FolderDO implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private Long ownerId;
private String name;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = "folderId")
private Set<FolderUserRelDO> userPermissions;
// Constructor, getter, setter ausgelassen
Versuche ich nun, einen neuen Ordner ohne Berechtigungszuordnungen zu speichern, fliegt eine Exception:
Java:
public void saveFolder(final FolderDO folder) {
EntityManager em = factory.createEntityManager();
em.getTransaction().begin();
em.merge(folder);
em.getTransaction().commit();
em.close();
}
Java:
Caused by: ERROR 42X01: Syntax error: Encountered "right" at line 1, column 294.
at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
at org.apache.derby.impl.sql.compile.ParserImpl.parseStatement(Unknown Source)
at org.apache.derby.impl.sql.GenericStatement.prepMinion(Unknown Source)
at org.apache.derby.impl.sql.GenericStatement.prepare(Unknown Source)
at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(Unknown Source)
... 66 more
Meine Fragen wären nun:
- Ist der Aufbau falsch (eventuell die OneToMany Relation o.Ä.)?
- Gibt es andere grundsätzliche Fehler, die ich gemacht habe? Ich habe mit JPA noch nicht so viel Erfahrung.
Vielen Dank im Voraus!