質問編集履歴
4
やりたかったことを画像にしてわかりやすくしました。また数日自分で学習をし直し、問題修正にあたってようやく解決できました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -13,7 +13,23 @@
|
|
13
13
|
先週の金曜日から今日まで50時間以上同じところで悩んでいます。できれば一人で解決したかったのですが、ここ二日は考えすぎて睡眠もとれず徹夜状態で頭がおかしくなりそうで相談させていただくことにしました。よろしくお願いします。
|
14
14
|
プログラミングをはじめて2か月にも満たない初心者で突っ込みどころの多いコードだと思います。
|
15
15
|
他にロジッククラスやBOクラスがありますがそちらは特に問題ではないと思っていますが、非常に多いので、問題のありそうだと思われるところを抜粋しますがもし足りない情報があれば追加します。
|
16
|
-
|
16
|
+
|
17
|
+
![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2024-03-02/65de5223-d00b-434c-8312-5e918363354b.png)
|
18
|
+
上記の画像のように表示されてしまっていました。このテキストと画像を同時に投稿した場合には独立せず同じ枠内で表示したかったのです。SELECTクエリではA,B,Cそれぞれをデータベース上で確認をして、全てのデータを重複せずに取得できることを確認しています。
|
19
|
+
この後行った修正は、残っている原因として考えられるものはA,B,Cで取得したレコードを全て一つのリストにまとめていましたが、これを順番に取り出す過程で関連させたい画像とテキストデータが結びついていないからでは?という発想に至り、Mapオブジェクトを作成してみることにしました。これでそれぞれA,B,Cから取得したレコードをMapオブジェクトにしてから一つのリストにまとめましたがこれでも表示は変わりませんでした。
|
20
|
+
データベースからの取得してくるクエリで、UNIONというものを教えてもらい、それでやってみたら思い通りの表示が可能になりました。以下使用したクエリ
|
21
|
+
String queryA = "SELECT * FROM (";
|
22
|
+
queryA += "SELECT m.mutter_id AS mutter_id, m.name AS name, m.text AS text, m.tweet_date AS tweet_date, f.name AS file_name, f.content AS content, f.content_type AS content_type, f.uploaded_at AS uploaded_at ";
|
23
|
+
queryA += "FROM MUTTERS m ";
|
24
|
+
queryA += "LEFT JOIN FILEPATHS f ON m.mutter_id = f.mutter_id ";
|
25
|
+
queryA += "UNION ";
|
26
|
+
queryA += "SELECT m.mutter_id AS mutter_id, f.name AS name, m.text AS text, m.tweet_date AS tweet_date, m.name AS file_name, f.content AS content, f.content_type AS content_type, f.uploaded_at AS uploaded_at ";
|
27
|
+
queryA += "FROM MUTTERS m ";
|
28
|
+
queryA += "RIGHT JOIN FILEPATHS f ON m.mutter_id = f.mutter_id ";
|
29
|
+
queryA += ") AS result ORDER BY COALESCE(tweet_date, uploaded_at) DESC";
|
30
|
+
|
31
|
+
このクエリを使用しただけで表示が改善されたので、データベースからの取得が間違っていたのだと思います。(まだ具体的に以前使用していたクエリの問題点ははっきりしていません)
|
32
|
+
この後、取得したレコードの表示順でまた問題が発生したため最後の AS result ORDER BY COALESCE(tweet_date, uploaded_at) DESC";というものを調べて外側で並び替えを行えるというものだったのでこれを使用したら並び替えもうまくできました。
|
17
33
|
|
18
34
|
|
19
35
|
|
@@ -214,6 +230,7 @@
|
|
214
230
|
- [ ] 知人に聞いた
|
215
231
|
- [x] その他
|
216
232
|
|
233
|
+
|
217
234
|
##### 上記の詳細・結果
|
218
235
|
特に改善はみられず、むしろ最初のころより冗長になってる気もします…
|
219
236
|
他にはAIを使用してエラーチェックなど行っています。
|
3
メソッドの説明を修正しました
test
CHANGED
File without changes
|
test
CHANGED
@@ -101,7 +101,7 @@
|
|
101
101
|
|
102
102
|
|
103
103
|
|
104
|
-
//画像
|
104
|
+
//画像のみの投稿の処理
|
105
105
|
public boolean create(Image image) {
|
106
106
|
try (Connection conn = DriverManager.getConnection(JDBC_URL, DB_USER, DB_PASS)) {
|
107
107
|
String sql = "INSERT INTO FILEPATHS (content, content_type, uploaded_at) VALUES (?, ?, ?)";
|
@@ -118,7 +118,7 @@
|
|
118
118
|
}
|
119
119
|
}
|
120
120
|
|
121
|
-
|
121
|
+
//画像とテキストが投稿された場合の処理
|
122
122
|
public boolean insertTextAndImage(Mutter mutter, Image image) {
|
123
123
|
try (Connection conn = DriverManager.getConnection(JDBC_URL, DB_USER, DB_PASS)) {
|
124
124
|
conn.setAutoCommit(false); // トランザクションを開始
|
2
実現したいことの修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
### 実現したいこと
|
2
2
|
現在java H2データベースを使用してTwitter(X)のようなつぶやきアプリの制作をしています。
|
3
3
|
画像を格納するテーブルと、テキストを格納するテーブルの2つがあります。
|
4
|
-
画像とテキストデータを関連付けて表示させたいです。(関連付けて投稿したつもりでもテキストのみ、と画像のみという判定になってしまう)
|
4
|
+
画像とテキストデータを関連付けて表示させたいです。(関連付けて投稿したつもりでも識別子がうまく付与されずにテキストのみ、と画像のみという判定になってしまう)
|
5
5
|
|
6
6
|
### 発生している問題・分からないこと
|
7
7
|
ユーザー情報登録→それを使用してログイン→メイン画面(実際につぶやきをするタイムライン)
|
1
タイトルの修正
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
画像データとテキストデータの関連付け
|
1
|
+
データベースを利用した画像データとテキストデータの関連付けができません
|
test
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
### 実現したいこと
|
2
|
-
現在Twitter(X)のようなつぶやきアプリの制作をしています。
|
2
|
+
現在java H2データベースを使用してTwitter(X)のようなつぶやきアプリの制作をしています。
|
3
3
|
画像を格納するテーブルと、テキストを格納するテーブルの2つがあります。
|
4
4
|
画像とテキストデータを関連付けて表示させたいです。(関連付けて投稿したつもりでもテキストのみ、と画像のみという判定になってしまう)
|
5
5
|
|