手元の環境で確認しましたが特に問題なくSELECTできるようです。
確認の環境
- Windows7
- Oracle 11g/XE
- Java8
- SpringBoot 1.5.14.RELEASE
- com.oracle:ojdbc6:11.2.0.3
DDL
sql
1CREATE TABLE "SAMPLE"."TEST" (
2 ID NUMBER(19,0) NOT NULL ENABLE,
3 NAME VARCHAR2(255) NOT NULL ENABLE,
4 PRIMARY KEY ("ID")
5);
エンティティクラス (Getter,Setterは省略します)
Java
1@Entity
2@Table(name = "test")
3public class TestModel {
4 @GeneratedValue(strategy = GenerationType.AUTO, generator = "native")
5 @GenericGenerator(name = "native", strategy = "native")
6 @Column(name = "id", unique = true, nullable = false)
7 @Id
8 Long id;
9 @Column(name = "name")
10 String name;
11}
サービスクラス
Java
1
2@Service
3public class TestService {
4
5 @Autowired private EntityManager manager;
6
7 public List<TestModel> getDataJPQL() {
8 StringBuilder sql = new StringBuilder();
9 sql.append("SELECT e From TestModel e"); // ←実行したいJPQL文
10 return manager.createQuery(sql.toString(),TestModel.class).getResultList();
11 }
12
13 public List<TestModel> getDataNativeQuery() {
14 StringBuilder sql = new StringBuilder();
15 sql.append("select * from sample.test"); // ←実行したいSelect文
16 return manager.createNativeQuery(sql.toString(),TestModel.class).getResultList();
17 }
18}
念のためご存知とは思いますがCreateQueryの場合はテーブル名にあたる部分はEntityクラス名、createNativeQueryの場合は実際のテーブル名を指定する必要があります。
以下のようにログの指定(logging部分)をすれば実際に発行するSQL文やパラメータを出力できますので誤りがないか確認してみるとよいと思います。
application.yml
yaml
1spring:
2 datasource:
3 platform: Oracle11g
4 driverClassName: oracle.jdbc.driver.OracleDriver
5 url: jdbc:oracle:thin:@127.0.0.1:1521/XE
6 username: [ユーザ名]
7 password: [パスワード]
8 jpa:
9 database-platform: org.hibernate.dialect.Oracle10gDialect
10logging:
11 level:
12 org.springframework: INFO
13 org.hibernate.SQL: TRACE
14 org.hibernate.type.descriptor.sql.BasicBinder: TRACE