質問編集履歴

4

「試したこと」にNativeQueryを使った事を追記しました。

2016/09/08 02:01

投稿

hitokamu
hitokamu

スコア11

test CHANGED
File without changes
test CHANGED
@@ -294,6 +294,68 @@
294
294
 
295
295
 
296
296
 
297
+ (2016/09/08追記)
298
+
299
+ 最適解かどうかはわからないのですが、NamedQueryを使うのを諦め、NativeQueryでObject型とすればテーブルのデータを取り出せることは確認できました。
300
+
301
+ ```
302
+
303
+ public AAATbl[] selectAll() {
304
+
305
+ try {
306
+
307
+ String sql = "SELECT BBB,CCC FROM AAA_TBL";
308
+
309
+ List<AAATbl> dest = new ArrayList<>();
310
+
311
+ List<Object[]> list = (List<Object[]>) em.createNativeQuery(sql).getResultList();
312
+
313
+ Iterator it = list.iterator();
314
+
315
+ while (it.hasNext()) {
316
+
317
+ AAATbl data = new AAATbl();
318
+
319
+ Object[] obj = (Object[]) it.next();
320
+
321
+ int i = 0;
322
+
323
+ data.bbb((String) obj[i++]);
324
+
325
+ data.ccc((String) obj[i++])
326
+
327
+ dest.add(data);
328
+
329
+ }
330
+
331
+ AAATbl[] ret;
332
+
333
+ ret = (AAATbl[]) dest.toArray(new AAATbl[dest.size()]);
334
+
335
+ return ret;
336
+
337
+ } catch (NoResultException e) {
338
+
339
+ return null;
340
+
341
+ } catch (PersistenceException | DatabaseException databaseEx) {
342
+
343
+ logger.fatal(databaseEx);
344
+
345
+ return null;
346
+
347
+ } catch (Exception e) {
348
+
349
+ logger.fatal(e);
350
+
351
+ return null;
352
+
353
+ }
354
+
355
+ }
356
+
357
+ ```
358
+
297
359
 
298
360
 
299
361
  ###補足情報(言語/FW/ツール等のバージョンなど)

3

記載したエラーログとテーブル構造に誤りがありましたので訂正します

2016/09/08 02:01

投稿

hitokamu
hitokamu

スコア11

test CHANGED
File without changes
test CHANGED
@@ -28,7 +28,15 @@
28
28
 
29
29
  エラーメッセージ
30
30
 
31
- 2016-09-06 20:07:13,933 [http-nio-8080-exec-7] FATAL (AAA.java:321) - javax.persistence.PersistenceException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.6.3.v20160428-59c81c5): org.eclipse.persistence.exceptions.DatabaseException
31
+ 2016-09-06 19:59:14,832 [http-nio-8080-exec-16] FATAL (AAA.java:48) - javax.persistence.PersistenceException: Exception [EclipseLink-6044] (Eclipse Persistence Services - 2.6.3.v20160428-59c81c5): org.eclipse.persistence.exceptions.QueryException
32
+
33
+ Exception Description: The primary key read from the row [ArrayRecord(
34
+
35
+ AAA_TBL.BBB => null
36
+
37
+ AAA_TBL.CCC => null)] during the execution of the query was detected to be null. Primary keys must not contain null.
38
+
39
+ Query: ReadAllQuery(name="AAATbl.findAll" referenceClass=AAATbl sql="SELECT BBB, CCC FROM AAA_TBL")
32
40
 
33
41
 
34
42
 
@@ -264,7 +272,7 @@
264
272
 
265
273
  ( "BBB" VARCHAR2(1 BYTE),
266
274
 
267
- "CCC" VARCHAR2(14 BYTE)
275
+ "CCC" VARCHAR2(1 BYTE)
268
276
 
269
277
  ) SEGMENT CREATION IMMEDIATE
270
278
 

2

DBのテーブル構造を追記しました。

2016/09/08 01:11

投稿

hitokamu
hitokamu

スコア11

test CHANGED
File without changes
test CHANGED
@@ -254,7 +254,29 @@
254
254
 
255
255
  ```
256
256
 
257
-
257
+ ### テーブル構造
258
+
259
+ 実際のカラムは32個ありますが、"BBB","CCC"の2つに省略化して記載しています。
260
+
261
+ ```
262
+
263
+ CREATE TABLE "DATABASE"."AAA_TBL"
264
+
265
+ ( "BBB" VARCHAR2(1 BYTE),
266
+
267
+ "CCC" VARCHAR2(14 BYTE)
268
+
269
+ ) SEGMENT CREATION IMMEDIATE
270
+
271
+ PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS NOLOGGING
272
+
273
+ STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
274
+
275
+ PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
276
+
277
+ TABLESPACE "USERS" ;
278
+
279
+ ```
258
280
 
259
281
  ###試したこと
260
282
 
@@ -271,3 +293,5 @@
271
293
  環境はNetBeans(8.1)+TomEE(7.0.1)
272
294
 
273
295
  JPAはEclipse Persistence Services - 2.6.3.v20160428-59c81c5を使用しています。
296
+
297
+ DataBaseは Oracle 11.2.0.1.0を使用しています。

1

TomcatEEと記載していましたがTomEEの誤りですので訂正します

2016/09/07 04:36

投稿

hitokamu
hitokamu

スコア11

test CHANGED
File without changes
test CHANGED
@@ -268,6 +268,6 @@
268
268
 
269
269
  ###補足情報(言語/FW/ツール等のバージョンなど)
270
270
 
271
- 環境はNetBeans(8.1)+TomcatEE(7.0.1)
271
+ 環境はNetBeans(8.1)+TomEE(7.0.1)
272
272
 
273
273
  JPAはEclipse Persistence Services - 2.6.3.v20160428-59c81c5を使用しています。