Hallo,
ich hab hier ein kleines Problem und weiß nicht wirklich weiter.
Ich beschäftige mich grade mit JPA und baue zu diesem zweck ein kleines Forum.
Ich hab 3 eintities, von denen jeweils zwei unidirectional miteinander verbunden sind ( @OneToMany, @ManyToOne)
+Forum
_|
_|-ForumThread
__|
__|-ForumThreadAnswer
Jetzt musste ich wegen einer Exception beim deployen eine der reference-Ids auf nur lesen setzten.
Jetzt versuche ich durch folgende abfrage einen neuen Thread anzulegen:
(ff steht für ForumFacade)
Hier die Menbers der Entities:
Nur leider bekomme ich immer gesagt das forumId null ist, was jedoch nicht sein kann. Ich glaube es hat was damit zu tun, das ich forumId auf nur lesen gesetzt habe.
Mir gefällt das sowieso nicht. Ich hätte es viel lieber andersrum: Ein ForumThread darf ForumThreadAnwsers anlegen
Nur weiß ich nicht wie :?
Wäre nett wenn mir das mal jemand erklären könnte.
ich hab hier ein kleines Problem und weiß nicht wirklich weiter.
Ich beschäftige mich grade mit JPA und baue zu diesem zweck ein kleines Forum.
Ich hab 3 eintities, von denen jeweils zwei unidirectional miteinander verbunden sind ( @OneToMany, @ManyToOne)
+Forum
_|
_|-ForumThread
__|
__|-ForumThreadAnswer
Jetzt musste ich wegen einer Exception beim deployen eine der reference-Ids auf nur lesen setzten.
Jetzt versuche ich durch folgende abfrage einen neuen Thread anzulegen:
(ff steht für ForumFacade)
Code:
if (request.getMethod().equals("POST") && request.getParameter("neuesThema").equals("true")) {
int forumId = Integer.decode(request.getParameter("forumId"));
int nextAnswer = ff.findAllBeitraege().size() + 1;
String themaTitel = request.getParameter("themaTitel");
String unterTitel = request.getParameter("unterTitel");
String htmlText = request.getParameter("neuerBeitrag");
System.out.println("Alle Threads: "+ff.findAllThreads().size());
System.out.println("Alle Beiträge: "+ff.findAllBeitraege().size());
System.out.println("Forum-Id: "+forumId);
System.out.println("Thema-Titel: "+themaTitel);
System.out.println("HTML-Text: "+htmlText);
ForumThread f = new ForumThread(
ff.findAllThreads().size() + 1,
forumId,
themaTitel);
//ff.create(f);
ForumThreadAnswers ftw = new ForumThreadAnswers(
//ff.getBeitraegeVonForumId(new Integer(request.getParameter("neuesThemaInForum")))
nextAnswer,
forumId,
htmlText);
ftw.setForumThread(f);
ff.create(ftw);
}
Hier die Menbers der Entities:
Code:
public class ForumThreadAnswers implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "answer_no", nullable = false)
private Integer answerNo;
@Column(name = "BENUTZER_id")
private Integer bENUTZERid;
@Column(name = "gast_name", length = 50)
private String gastName;
@Basic(optional = false)
@Column(name = "FORUMTHREAD_id", nullable = false, insertable=false, updatable=false)
private int fORUMTHREADid;
@Basic(optional = false)
@Lob
@Column(name = "html_text", nullable = false, length = 65535)
private String htmlText;
@ManyToOne(cascade=CascadeType.PERSIST)
private ForumThread forumThread;
...
public class ForumThread implements Serializable {
private static final long serialVersionUID = 1L;
@Basic(optional = false)
@Column(name = "FORUM_id", nullable = false, insertable=false, updatable=false)
private int fORUMid;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id", nullable = false)
private Integer id;
@Basic(optional = false)
@Column(name = "titel", nullable = false, length = 150)
private String titel;
@Column(name = "untertitel", length = 255)
private String untertitel;
@ManyToOne
private Forum forum;
@OneToMany(mappedBy = "forumThread", cascade=CascadeType.PERSIST)
private Collection<ForumThreadAnswers> forumThreadAnswers = new ArrayList<ForumThreadAnswers>();
...
public class Forum implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id", nullable = false)
private Integer id;
@Basic(optional = false)
@Column(name = "titel", nullable = false, length = 150)
private String titel;
@Column(name = "untertitel", length = 255)
private String untertitel;
@Lob
@Column(name = "beschreibung", length = 65535)
private String beschreibung;
@OneToMany(mappedBy = "forum")
private Collection<ForumThread> _forumThread = new ArrayList<ForumThread>();
...
Nur leider bekomme ich immer gesagt das forumId null ist, was jedoch nicht sein kann. Ich glaube es hat was damit zu tun, das ich forumId auf nur lesen gesetzt habe.
Mir gefällt das sowieso nicht. Ich hätte es viel lieber andersrum: Ein ForumThread darf ForumThreadAnwsers anlegen
Nur weiß ich nicht wie :?
Wäre nett wenn mir das mal jemand erklären könnte.