質問編集履歴

5

改善

2019/11/19 11:07

投稿

pokerStars
pokerStars

スコア67

test CHANGED
@@ -1 +1 @@
1
- JAVA Springboot  Booleanでfalseの物をデータベースから持ってくるやり方分からな
1
+ JAVA JPA Query  条件付きのlike検索した
test CHANGED
@@ -1,249 +1,31 @@
1
- Todoリストを作っており、検索機能の実装を
1
+ Queryでの実装をやっした
2
-
3
-
4
2
 
5
3
  ```Java
6
4
 
7
- @Repository
5
+ Repository
8
6
 
9
7
  public interface TodoRepository extends JpaRepository<Todo, Long> {
10
8
 
11
- List<Todo> findByTitleContainingOrderByIdAsc(String title);
9
+ @Query("select aaa from Todo aaa where aaa.title like %:title% order by aaa.id asc")
12
10
 
13
- }
11
+ public List<Todo> findTitles(String title);
14
12
 
15
- ```
16
-
17
- 検索機能をしているのですが、上記にdone(Boolean)がfalseという条件を加えたいですが書き方が分かりません。
18
-
19
- 何卒よろしくお願いいたします。
20
-
21
-
22
-
23
-
24
-
25
-
26
-
27
- ```Java
28
-
29
- package com.example.project_todolist;
30
-
31
-
32
-
33
- import javax.persistence.*;
34
-
35
- import javax.validation.constraints.NotNull;
36
-
37
- import javax.validation.constraints.Size;
38
-
39
- import java.util.Date;
40
-
41
-
42
-
43
-
44
-
45
-
46
-
47
- @Entity
48
-
49
- @Table(name = "todoitems")
50
-
51
- public class Todo {
52
-
53
- @Id
54
-
55
- @GeneratedValue(strategy = GenerationType.IDENTITY)
56
-
57
-
58
-
59
- private long id;
60
-
61
-
62
-
63
- @NotNull
64
-
65
- @Size(min = 1, max = 30)
66
-
67
- private String title;
68
-
69
-
70
-
71
- @NotNull
72
-
73
- @Size(min = 1, max = 30)
74
-
75
- private String day;
76
-
77
-
78
-
79
-
80
-
81
- private Boolean done ;
82
-
83
-
84
-
85
- @Temporal(TemporalType.DATE)
86
-
87
- @Column(updatable = false)
88
-
89
- private Date createDay;
90
-
91
-
92
-
93
- @PrePersist
94
-
95
- public void prePersist() {
96
-
97
- this.createDay = new Date();
98
-
99
- }
13
+ } 
100
-
101
-
102
-
103
- public Date getCreateDay() {
104
-
105
- return createDay;
106
-
107
- }
108
-
109
-
110
-
111
-
112
-
113
- public Long getId() {
114
-
115
- return id;
116
-
117
- }
118
-
119
-
120
-
121
- public void setId(Long id) {
122
-
123
- this.id = id;
124
-
125
- }
126
-
127
-
128
-
129
- public String getTitle() {
130
-
131
- return title;
132
-
133
- }
134
-
135
-
136
-
137
- public void setTitle(String title) {
138
-
139
- this.title = title;
140
-
141
- }
142
-
143
-
144
-
145
- public String getDay() {
146
-
147
- return day;
148
-
149
- }
150
-
151
-
152
-
153
- public void setDay(String day) {
154
-
155
- this.day = day;
156
-
157
- }
158
-
159
-
160
-
161
-
162
-
163
- public Boolean getDone() {
164
-
165
- return done;
166
-
167
- }
168
-
169
-
170
-
171
- public void setDone(Boolean done) {
172
-
173
- this.done = done;
174
-
175
- }
176
-
177
-
178
-
179
-
180
-
181
-
182
-
183
-
184
-
185
-
186
-
187
- }
188
-
189
-
190
-
191
-
192
14
 
193
15
  ```
194
16
 
195
17
 
196
18
 
19
+  このようにしたところ曖昧検索機能を実装できました。
20
+
21
+ そこで、次はbooleanのfaleの場合のみ検索するという判別を加えたいと思い、調べたところ
22
+
197
23
  ```Java
198
24
 
199
- @Service
200
-
201
- @Transactional
202
-
203
- public class TodoService {
204
-
205
-
206
-
207
- @Autowired
208
-
209
- private TodoRepository repository;
210
-
211
-
212
-
213
- public List<Todo> findAll() {
214
-
215
- return repository.findAll(new Sort(Sort.Direction.DESC, "id"));
216
-
217
- }
218
-
219
-
220
-
221
- public Todo getOne(Long id) {
222
-
223
- return repository.getOne(id);
224
-
225
- }
226
-
227
-
228
-
229
- public Todo save(Todo todo) {
230
-
231
- return repository.save(todo);
232
-
233
- }
234
-
235
-
236
-
237
- public List<Todo> searchTodo(String title){
25
+ SELECT aaa FROM Todo aaa WHERE aaa.done = false
238
-
239
- return repository.findByTitleContainingOrderByIdAsc(title);
240
-
241
- }
242
-
243
-
244
-
245
- }
246
-
247
-
248
26
 
249
27
  ```
28
+
29
+ このようにするとBoolean(done)での判別ができると書いてあったのですが、この2つのqueryを繋げるにはどのように書けばいいのかが分かりませんでした。
30
+
31
+ ご教授の方お願いできますでしょうか?

4

誤字

2019/11/19 11:07

投稿

pokerStars
pokerStars

スコア67

test CHANGED
@@ -1 +1 @@
1
- JAVA Springboot  Booleanfalseの物をデータベースから持ってくるやり方が分からない
1
+ JAVA Springboot  Booleanfalseの物をデータベースから持ってくるやり方が分からない
test CHANGED
@@ -14,7 +14,7 @@
14
14
 
15
15
  ```
16
16
 
17
- 現状はこのように検索機能をしているのですが、上記にdone(Boolean)がfalseという条件を加えたいですが書き方が分かりません。
17
+ 検索機能をしているのですが、上記にdone(Boolean)がfalseという条件を加えたいですが書き方が分かりません。
18
18
 
19
19
  何卒よろしくお願いいたします。
20
20
 

3

誤字

2019/11/19 08:00

投稿

pokerStars
pokerStars

スコア67

test CHANGED
@@ -1 +1 @@
1
- JAVA Springboot  Booleanのが
1
+ JAVA Springboot  Booleanがfalse物をデータベースから持ってくるやり方分からない
test CHANGED
File without changes

2

修正

2019/11/19 02:18

投稿

pokerStars
pokerStars

スコア67

test CHANGED
@@ -1 +1 @@
1
- JAVA Springboot  検索機能でbooleanがfalseのものだけ表示したい
1
+ JAVA Springboot  Boolean
test CHANGED
@@ -1,314 +1,244 @@
1
1
  Todoリストを作っており、検索機能の実装をしています。
2
2
 
3
+
4
+
5
+ ```Java
6
+
7
+ @Repository
8
+
9
+ public interface TodoRepository extends JpaRepository<Todo, Long> {
10
+
11
+ List<Todo> findByTitleContainingOrderByIdAsc(String title);
12
+
13
+ }
14
+
15
+ ```
16
+
3
- Todo完了・未完了をdone(Boolean)のtrue/falseで区別してい
17
+ 現状はこように検索機能しているのですが、上記にdoneBoolean)がfalseという条件を加えたいすが書き方が分かりせん
4
-
5
- 検索時、Todoが未完了done(false)のものだけを数えて 「〜件ヒットしました!」みたいな感じで表示させたいのですが、現在は完了done(true)しているものまで数えてしまいます。
6
-
7
- 未完了のTodoのみを検索でヒットさせるにはどのようにすればいいのでしょうか?
8
18
 
9
19
  何卒よろしくお願いいたします。
10
20
 
11
21
 
12
22
 
13
- ![イメージ説明](7bb36167e7df1850c4d4e2926a83c9b8.png)
23
+
14
-
15
- ![イメージ説明](a94f4a093a2b514db834221606996253.png)
24
+
25
+
16
26
 
17
27
  ```Java
18
28
 
19
- <!DOCTYPE html>
20
-
21
- <html xmlns:th="http://www.thymeleaf.org">
22
-
23
- <head>
24
-
25
- <meta charset="UTF-8">
26
-
27
- <title>Title</title>
28
-
29
- <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
30
-
31
- <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
32
-
33
- <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
34
-
35
- <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
36
-
37
-
38
-
39
- </head>
40
-
41
- <body>
42
-
43
- <div th:replace="/common.html::header"></div>
44
-
45
- <hr/>
46
-
47
- </br>
48
-
49
- </br>
50
-
51
- </br>
52
-
53
-
54
-
55
- <div class="container">
56
-
57
- <form method="POST" th:action="@{/search}" >
58
-
59
- <input class="form-control" type="text" name="title" required/>
60
-
61
- </br>
62
-
63
-
64
-
65
- <div class="text-center">
66
-
67
- <input class="btn btn-outline-secondary" type="submit" value="検索" />
68
-
69
- </div>
70
-
71
- </form>
72
-
73
-
74
-
75
- <div th:if="${todos != null && #lists.isEmpty(todos)}">
76
-
77
- <P>対象のToDoは見つかりません</P>
78
-
79
- </div>
80
-
81
-
82
-
83
- <div th:unless="${#lists.isEmpty(todos)}">
84
-
85
- <p th:text="'Todoが' + ${#lists.size(todos)} + '件見つかりました'"></p>
86
-
87
- </div> 
88
-
89
- 「未完了のだけを件数に入れたいのだが、完了しているものまで件数に入ってしまう」
90
-
91
-
92
-
93
-
94
-
95
- <table class="table table-bordered"> 
96
-
97
- <tbody>
98
-
99
- <tr th:each="todo, list :${todos}" th:object="${todo}">
100
-
101
-
102
-
103
-
104
-
105
- <td th:text="*{title}"></td>
106
-
107
- <td th:text="*{day}"></td>
108
-
109
- <td th:text="${#dates.format(todo.createDay, '(yyyy-MM-dd )')}">(1970-01-01 )</td>
110
-
111
-
112
-
113
-
114
-
115
- <td><a class="btn btn-outline-dark" th:href="@{/{id}/edit(id=*{id})}">編集</a></td>
116
-
117
-
118
-
119
-
120
-
121
- <td>
122
-
123
- <form th:unless="${todo.done}" method="post" th:action="@{/done}" th:object="${todo}">
124
-
125
- <input type="hidden" name="id" th:value="*{id}" />
126
-
127
- <input class="btn btn-outline-danger" type="submit" value="未完了" />
128
-
129
- </form>
130
-
131
- </td>
132
-
133
-
134
-
135
-
136
-
137
-
138
-
139
- </tr>
140
-
141
- </tbody>
142
-
143
- </table>
144
-
145
-
146
-
147
- </div>
148
-
149
- </body>
150
-
151
- </html>
29
+ package com.example.project_todolist;
30
+
31
+
32
+
33
+ import javax.persistence.*;
34
+
35
+ import javax.validation.constraints.NotNull;
36
+
37
+ import javax.validation.constraints.Size;
38
+
39
+ import java.util.Date;
40
+
41
+
42
+
43
+
44
+
45
+
46
+
47
+ @Entity
48
+
49
+ @Table(name = "todoitems")
50
+
51
+ public class Todo {
52
+
53
+ @Id
54
+
55
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
56
+
57
+
58
+
59
+ private long id;
60
+
61
+
62
+
63
+ @NotNull
64
+
65
+ @Size(min = 1, max = 30)
66
+
67
+ private String title;
68
+
69
+
70
+
71
+ @NotNull
72
+
73
+ @Size(min = 1, max = 30)
74
+
75
+ private String day;
76
+
77
+
78
+
79
+
80
+
81
+ private Boolean done ;
82
+
83
+
84
+
85
+ @Temporal(TemporalType.DATE)
86
+
87
+ @Column(updatable = false)
88
+
89
+ private Date createDay;
90
+
91
+
92
+
93
+ @PrePersist
94
+
95
+ public void prePersist() {
96
+
97
+ this.createDay = new Date();
98
+
99
+ }
100
+
101
+
102
+
103
+ public Date getCreateDay() {
104
+
105
+ return createDay;
106
+
107
+ }
108
+
109
+
110
+
111
+
112
+
113
+ public Long getId() {
114
+
115
+ return id;
116
+
117
+ }
118
+
119
+
120
+
121
+ public void setId(Long id) {
122
+
123
+ this.id = id;
124
+
125
+ }
126
+
127
+
128
+
129
+ public String getTitle() {
130
+
131
+ return title;
132
+
133
+ }
134
+
135
+
136
+
137
+ public void setTitle(String title) {
138
+
139
+ this.title = title;
140
+
141
+ }
142
+
143
+
144
+
145
+ public String getDay() {
146
+
147
+ return day;
148
+
149
+ }
150
+
151
+
152
+
153
+ public void setDay(String day) {
154
+
155
+ this.day = day;
156
+
157
+ }
158
+
159
+
160
+
161
+
162
+
163
+ public Boolean getDone() {
164
+
165
+ return done;
166
+
167
+ }
168
+
169
+
170
+
171
+ public void setDone(Boolean done) {
172
+
173
+ this.done = done;
174
+
175
+ }
176
+
177
+
178
+
179
+
180
+
181
+
182
+
183
+
184
+
185
+
186
+
187
+ }
188
+
189
+
190
+
191
+
152
192
 
153
193
  ```
154
194
 
195
+
196
+
155
197
  ```Java
156
198
 
157
- package com.example.project_todolist;
158
-
159
-
160
-
161
- import javax.persistence.*;
162
-
163
- import javax.validation.constraints.NotNull;
164
-
165
- import javax.validation.constraints.Size;
166
-
167
- import java.util.Date;
168
-
169
-
170
-
171
-
172
-
173
-
174
-
175
- @Entity
176
-
177
- @Table(name = "todoitems")
178
-
179
- public class Todo {
180
-
181
- @Id
182
-
183
- @GeneratedValue(strategy = GenerationType.IDENTITY)
184
-
185
-
186
-
187
- private long id;
188
-
189
-
190
-
191
- @NotNull
192
-
193
- @Size(min = 1, max = 30)
194
-
195
- private String title;
196
-
197
-
198
-
199
- @NotNull
200
-
201
- @Size(min = 1, max = 30)
202
-
203
- private String day;
204
-
205
-
206
-
207
-
208
-
209
- private Boolean done ;
210
-
211
-
212
-
213
- @Temporal(TemporalType.DATE)
214
-
215
- @Column(updatable = false)
216
-
217
- private Date createDay;
218
-
219
-
220
-
221
- @PrePersist
222
-
223
- public void prePersist() {
224
-
225
- this.createDay = new Date();
226
-
227
- }
228
-
229
-
230
-
231
- public Date getCreateDay() {
232
-
233
- return createDay;
234
-
235
- }
236
-
237
-
238
-
239
-
240
-
241
- public Long getId() {
242
-
243
- return id;
244
-
245
- }
246
-
247
-
248
-
249
- public void setId(Long id) {
250
-
251
- this.id = id;
252
-
253
- }
254
-
255
-
256
-
257
- public String getTitle() {
258
-
259
- return title;
260
-
261
- }
262
-
263
-
264
-
265
- public void setTitle(String title) {
266
-
267
- this.title = title;
268
-
269
- }
270
-
271
-
272
-
273
- public String getDay() {
274
-
275
- return day;
276
-
277
- }
278
-
279
-
280
-
281
- public void setDay(String day) {
282
-
283
- this.day = day;
284
-
285
- }
286
-
287
-
288
-
289
-
290
-
291
- public Boolean getDone() {
292
-
293
- return done;
294
-
295
- }
296
-
297
-
298
-
299
- public void setDone(Boolean done) {
300
-
301
- this.done = done;
302
-
303
- }
304
-
305
-
306
-
307
-
308
-
309
-
310
-
311
-
199
+ @Service
200
+
201
+ @Transactional
202
+
203
+ public class TodoService {
204
+
205
+
206
+
207
+ @Autowired
208
+
209
+ private TodoRepository repository;
210
+
211
+
212
+
213
+ public List<Todo> findAll() {
214
+
215
+ return repository.findAll(new Sort(Sort.Direction.DESC, "id"));
216
+
217
+ }
218
+
219
+
220
+
221
+ public Todo getOne(Long id) {
222
+
223
+ return repository.getOne(id);
224
+
225
+ }
226
+
227
+
228
+
229
+ public Todo save(Todo todo) {
230
+
231
+ return repository.save(todo);
232
+
233
+ }
234
+
235
+
236
+
237
+ public List<Todo> searchTodo(String title){
238
+
239
+ return repository.findByTitleContainingOrderByIdAsc(title);
240
+
241
+ }
312
242
 
313
243
 
314
244
 
@@ -316,72 +246,4 @@
316
246
 
317
247
 
318
248
 
319
-
320
-
321
249
  ```
322
-
323
- ```Java
324
-
325
- @Repository
326
-
327
- public interface TodoRepository extends JpaRepository<Todo, Long> {
328
-
329
- List<Todo> findByTitleContainingOrderByIdAsc(String title);
330
-
331
- }
332
-
333
- ```
334
-
335
- ```Java
336
-
337
- @Service
338
-
339
- @Transactional
340
-
341
- public class TodoService {
342
-
343
-
344
-
345
- @Autowired
346
-
347
- private TodoRepository repository;
348
-
349
-
350
-
351
- public List<Todo> findAll() {
352
-
353
- return repository.findAll(new Sort(Sort.Direction.DESC, "id"));
354
-
355
- }
356
-
357
-
358
-
359
- public Todo getOne(Long id) {
360
-
361
- return repository.getOne(id);
362
-
363
- }
364
-
365
-
366
-
367
- public Todo save(Todo todo) {
368
-
369
- return repository.save(todo);
370
-
371
- }
372
-
373
-
374
-
375
- public List<Todo> searchTodo(String title){
376
-
377
- return repository.findByTitleContainingOrderByIdAsc(title);
378
-
379
- }
380
-
381
-
382
-
383
- }
384
-
385
-
386
-
387
- ```

1

誤字

2019/11/19 02:17

投稿

pokerStars
pokerStars

スコア67

test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Todoの完了・未完了をdone(Boolean)のtrue/falseで区別しています。
4
4
 
5
- 検索をする時、Todoが未完了done(false)のものだけを数えて 「〜件ヒットしました!」みたいな感じで表示させたいのですが、現在は完了done(true)しているものまで数えてしまいます。
5
+ 検索時、Todoが未完了done(false)のものだけを数えて 「〜件ヒットしました!」みたいな感じで表示させたいのですが、現在は完了done(true)しているものまで数えてしまいます。
6
6
 
7
7
  未完了のTodoのみを検索でヒットさせるにはどのようにすればいいのでしょうか?
8
8
 
@@ -385,7 +385,3 @@
385
385
 
386
386
 
387
387
  ```
388
-
389
-
390
-
391
- 検索機能で