質問編集履歴

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

hitokamu

hitokamu score 5

2016/09/08 11:01  投稿

JPAでのPrimaryKeyが無くNULLのあるテーブルへのアクセスについて
###JPAでのPrimaryKeyが無くNULLのあるテーブルへのアクセスについて
S2DAOで構築されたシステムをJPAで置き換えを試みています。 
テーブルの中にPrimaryKeyが無いものがあったのですが、稼働中のシステムの為データベースにPrimaryKeyを追加することはできません。
そこで全てのカラムをEmbeddableとして定義することとしたのですが、この方法ではデータの中に一つでもNULLが含まれる場合にDatabaseExceptionが発生してしました。
そもそもJPAではこのような使い方をすることが許されないのでしょうか?。
###発生している問題・エラーメッセージ
selectAllでAAA_TBLに対しSELECTを実行しようとすると、
カラムBBB,CCCにnullのデータが無い状態ではSELECTの実行結果を
取得できるのですが、nullが1件でもあると
「※ここで例外」とコメントを付けた箇所でDatabaseExceptionが発生してしまいます。
```
エラーメッセージ
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
Exception Description: The primary key read from the row [ArrayRecord(
   AAA_TBL.BBB => null
   AAA_TBL.CCC => null)] during the execution of the query was detected to be null. Primary keys must not contain null.
Query: ReadAllQuery(name="AAATbl.findAll" referenceClass=AAATbl sql="SELECT BBB, CCC FROM AAA_TBL")
###該当のソースコード
@Entity
@Table(name = "AAA_TBL")
@XmlRootElement
@NamedQueries({
   @NamedQuery(name = "AAA.findAll", query = "SELECT c FROM AAATbl c")})
public class AAATbl implements Serializable {
   private static final long serialVersionUID = 1L;
   @EmbeddedId
   protected AAATblPK aaaTblPK;
   public AAATbl() {
   }
   public AAATbl(AAATblPK aaaTblPK) {
       this.aaaTblPK= aaaTblPK;
   }
   public AAATbl(String bbb,String ccc) {
       this.aaaTblPK= new AAATblPK(bbb,ccc);
   }
   public AAATblPK getAAATblPK() {
       return this.aaaTblPK;
   }
   public void setAAATblPK(AAATblPK aaaTblPK) {
       this.aaaTblPK= aaaTblPK;
   }
 public class AAATblPK implements Serializable {
   @Size(max = 1 )
   @Column(name = "BBB")
   private String bbb;
   @Size(max = 1 )
   @Column(name = "CCC")
   private String ccc;
   public AAAPK() {
   }
   public AAAPK(String bbb,String ccc) {
       this.bbb = bbb;
       this.ccc = ccc;
   }
   public String getBbb() {
       return bbb;
   }
   public void setBbb(String bbb) {
       this.bbb = bbb;
   }
   public String getCcc() {
       return ccc;
   }
   public void setCcc(String Ccc) {
       this.ccc = ccc;
   }
 @Override
   public int hashCode() {
       int hash = 0;
       hash += (bbb != null ? bbb.hashCode() : 0);
       hash += (ccc != null ? ccc.hashCode() : 0);
       return hash;
   }
   @Override
   public boolean equals(Object object) {
       if (!(object instanceof AAATblPK)) {
           return false;
       }
       AAATblPK other = (AAATblPK) object;
       if ((this.bbb== null && other.bbb!= null) || (this.bbb!= null && !this.bbb.equals(other.bbb))) {
           return false;
       }
       if ((this.ccc== null && other.ccc!= null) || (this.ccc!= null && !this.ccc.equals(other.ccc))) {
           return false;
       }
       return true;
   }
   @Override
   public String toString() {
       return "tmp.AAATblPK[ bbb= "+ bbb + ",ccc=" + ccc +" ]";
   }
}
   public AAATbl[] selectAll() {
       try {
           
           Query query;
           query = em.createNamedQuery("AAATbl.findAll");
           List<AAATbl> list;
           list = query.getResultList();   // ※ここで例外
           AAATbl[] ret;
           ret = (AAATbl[]) list.toArray(new AAATbl[list.size()]);
           return ret;
       } catch (NoResultException e) {
           return null;
       } catch (PersistenceException | DatabaseException databaseEx) {
           logger.fatal(e);
           return null;
       } catch (Exception e) {
           logger.fatal(e);
           return null;
       }
   }
```
### テーブル構造
実際のカラムは32個ありますが、"BBB","CCC"の2つに省略化して記載しています。
```
CREATE TABLE "DATABASE"."AAA_TBL"
  (   "BBB" VARCHAR2(1 BYTE),
       "CCC" VARCHAR2(1 BYTE)
) SEGMENT CREATION IMMEDIATE
 PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS NOLOGGING
 STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
 TABLESPACE "USERS" ;
```
###試したこと
テーブルの値にNULL値が含まれない場合は値を取得できる事を確認しています。
@PrimaryKey(validation=IdValidation.NONE)を追加してもみたのですが、状況は変わりませんでした。
(2016/09/08追記)  
最適解かどうかはわからないのですが、NamedQueryを使うのを諦め、NativeQueryでObject型とすればテーブルのデータを取り出せることは確認できました。  
```  
 public AAATbl[] selectAll() {  
       try {  
           String sql = "SELECT BBB,CCC FROM AAA_TBL";  
           List<AAATbl> dest = new ArrayList<>();  
           List<Object[]> list = (List<Object[]>) em.createNativeQuery(sql).getResultList();  
           Iterator it = list.iterator();  
           while (it.hasNext()) {  
               AAATbl data = new AAATbl();  
               Object[] obj = (Object[]) it.next();  
               int i = 0;  
               data.bbb((String) obj[i++]);  
               data.ccc((String) obj[i++])  
               dest.add(data);  
           }  
           AAATbl[] ret;  
           ret = (AAATbl[]) dest.toArray(new AAATbl[dest.size()]);  
           return ret;  
       } catch (NoResultException e) {  
           return null;  
       } catch (PersistenceException | DatabaseException databaseEx) {  
           logger.fatal(databaseEx);  
           return null;  
       } catch (Exception e) {  
           logger.fatal(e);  
           return null;  
       }  
   }  
```  
###補足情報(言語/FW/ツール等のバージョンなど)
環境はNetBeans(8.1)+TomEE(7.0.1)
     JPAはEclipse Persistence Services - 2.6.3.v20160428-59c81c5を使用しています。
     DataBaseは Oracle 11.2.0.1.0を使用しています。
  • Java EE

    457 questions

    Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

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

hitokamu

hitokamu score 5

2016/09/08 10:11  投稿

JPAでのPrimaryKeyが無くNULLのあるテーブルへのアクセスについて
###JPAでのPrimaryKeyが無くNULLのあるテーブルへのアクセスについて
S2DAOで構築されたシステムをJPAで置き換えを試みています。 
テーブルの中にPrimaryKeyが無いものがあったのですが、稼働中のシステムの為データベースにPrimaryKeyを追加することはできません。
そこで全てのカラムをEmbeddableとして定義することとしたのですが、この方法ではデータの中に一つでもNULLが含まれる場合にDatabaseExceptionが発生してしました。
そもそもJPAではこのような使い方をすることが許されないのでしょうか?。
###発生している問題・エラーメッセージ
selectAllでAAA_TBLに対しSELECTを実行しようとすると、
カラムBBB,CCCにnullのデータが無い状態ではSELECTの実行結果を
取得できるのですが、nullが1件でもあると
「※ここで例外」とコメントを付けた箇所でDatabaseExceptionが発生してしまいます。
```
エラーメッセージ
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
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
Exception Description: The primary key read from the row [ArrayRecord(
   AAA_TBL.BBB => null
   AAA_TBL.CCC => null)] during the execution of the query was detected to be null. Primary keys must not contain null.
Query: ReadAllQuery(name="AAATbl.findAll" referenceClass=AAATbl sql="SELECT BBB, CCC FROM AAA_TBL")
###該当のソースコード
@Entity
@Table(name = "AAA_TBL")
@XmlRootElement
@NamedQueries({
   @NamedQuery(name = "AAA.findAll", query = "SELECT c FROM AAATbl c")})
public class AAATbl implements Serializable {
   private static final long serialVersionUID = 1L;
   @EmbeddedId
   protected AAATblPK aaaTblPK;
   public AAATbl() {
   }
   public AAATbl(AAATblPK aaaTblPK) {
       this.aaaTblPK= aaaTblPK;
   }
   public AAATbl(String bbb,String ccc) {
       this.aaaTblPK= new AAATblPK(bbb,ccc);
   }
   public AAATblPK getAAATblPK() {
       return this.aaaTblPK;
   }
   public void setAAATblPK(AAATblPK aaaTblPK) {
       this.aaaTblPK= aaaTblPK;
   }
 public class AAATblPK implements Serializable {
   @Size(max = 1 )
   @Column(name = "BBB")
   private String bbb;
   @Size(max = 1 )
   @Column(name = "CCC")
   private String ccc;
   public AAAPK() {
   }
   public AAAPK(String bbb,String ccc) {
       this.bbb = bbb;
       this.ccc = ccc;
   }
   public String getBbb() {
       return bbb;
   }
   public void setBbb(String bbb) {
       this.bbb = bbb;
   }
   public String getCcc() {
       return ccc;
   }
   public void setCcc(String Ccc) {
       this.ccc = ccc;
   }
 @Override
   public int hashCode() {
       int hash = 0;
       hash += (bbb != null ? bbb.hashCode() : 0);
       hash += (ccc != null ? ccc.hashCode() : 0);
       return hash;
   }
   @Override
   public boolean equals(Object object) {
       if (!(object instanceof AAATblPK)) {
           return false;
       }
       AAATblPK other = (AAATblPK) object;
       if ((this.bbb== null && other.bbb!= null) || (this.bbb!= null && !this.bbb.equals(other.bbb))) {
           return false;
       }
       if ((this.ccc== null && other.ccc!= null) || (this.ccc!= null && !this.ccc.equals(other.ccc))) {
           return false;
       }
       return true;
   }
   @Override
   public String toString() {
       return "tmp.AAATblPK[ bbb= "+ bbb + ",ccc=" + ccc +" ]";
   }
}
   public AAATbl[] selectAll() {
       try {
           
           Query query;
           query = em.createNamedQuery("AAATbl.findAll");
           List<AAATbl> list;
           list = query.getResultList();   // ※ここで例外
           AAATbl[] ret;
           ret = (AAATbl[]) list.toArray(new AAATbl[list.size()]);
           return ret;
       } catch (NoResultException e) {
           return null;
       } catch (PersistenceException | DatabaseException databaseEx) {
           logger.fatal(e);
           return null;
       } catch (Exception e) {
           logger.fatal(e);
           return null;
       }
   }
```
### テーブル構造
実際のカラムは32個ありますが、"BBB","CCC"の2つに省略化して記載しています。
```
CREATE TABLE "DATABASE"."AAA_TBL"
  (   "BBB" VARCHAR2(1 BYTE),
       "CCC" VARCHAR2(14 BYTE)
       "CCC" VARCHAR2(1 BYTE)
) SEGMENT CREATION IMMEDIATE
 PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS NOLOGGING
 STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
 TABLESPACE "USERS" ;
```
###試したこと
テーブルの値にNULL値が含まれない場合は値を取得できる事を確認しています。
@PrimaryKey(validation=IdValidation.NONE)を追加してもみたのですが、状況は変わりませんでした。
###補足情報(言語/FW/ツール等のバージョンなど)
環境はNetBeans(8.1)+TomEE(7.0.1)
     JPAはEclipse Persistence Services - 2.6.3.v20160428-59c81c5を使用しています。
     DataBaseは Oracle 11.2.0.1.0を使用しています。
  • Java EE

    457 questions

    Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

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

hitokamu

hitokamu score 5

2016/09/07 13:36  投稿

JPAでのPrimaryKeyが無くNULLのあるテーブルへのアクセスについて
###JPAでのPrimaryKeyが無くNULLのあるテーブルへのアクセスについて
S2DAOで構築されたシステムをJPAで置き換えを試みています。 
テーブルの中にPrimaryKeyが無いものがあったのですが、稼働中のシステムの為データベースにPrimaryKeyを追加することはできません。
そこで全てのカラムをEmbeddableとして定義することとしたのですが、この方法ではデータの中に一つでもNULLが含まれる場合にDatabaseExceptionが発生してしました。
そもそもJPAではこのような使い方をすることが許されないのでしょうか?。
###発生している問題・エラーメッセージ
selectAllでAAA_TBLに対しSELECTを実行しようとすると、
カラムBBB,CCCにnullのデータが無い状態ではSELECTの実行結果を
取得できるのですが、nullが1件でもあると
「※ここで例外」とコメントを付けた箇所でDatabaseExceptionが発生してしまいます。
```
エラーメッセージ
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
###該当のソースコード
@Entity
@Table(name = "AAA_TBL")
@XmlRootElement
@NamedQueries({
   @NamedQuery(name = "AAA.findAll", query = "SELECT c FROM AAATbl c")})
public class AAATbl implements Serializable {
   private static final long serialVersionUID = 1L;
   @EmbeddedId
   protected AAATblPK aaaTblPK;
   public AAATbl() {
   }
   public AAATbl(AAATblPK aaaTblPK) {
       this.aaaTblPK= aaaTblPK;
   }
   public AAATbl(String bbb,String ccc) {
       this.aaaTblPK= new AAATblPK(bbb,ccc);
   }
   public AAATblPK getAAATblPK() {
       return this.aaaTblPK;
   }
   public void setAAATblPK(AAATblPK aaaTblPK) {
       this.aaaTblPK= aaaTblPK;
   }
 public class AAATblPK implements Serializable {
   @Size(max = 1 )
   @Column(name = "BBB")
   private String bbb;
   @Size(max = 1 )
   @Column(name = "CCC")
   private String ccc;
   public AAAPK() {
   }
   public AAAPK(String bbb,String ccc) {
       this.bbb = bbb;
       this.ccc = ccc;
   }
   public String getBbb() {
       return bbb;
   }
   public void setBbb(String bbb) {
       this.bbb = bbb;
   }
   public String getCcc() {
       return ccc;
   }
   public void setCcc(String Ccc) {
       this.ccc = ccc;
   }
 @Override
   public int hashCode() {
       int hash = 0;
       hash += (bbb != null ? bbb.hashCode() : 0);
       hash += (ccc != null ? ccc.hashCode() : 0);
       return hash;
   }
   @Override
   public boolean equals(Object object) {
       if (!(object instanceof AAATblPK)) {
           return false;
       }
       AAATblPK other = (AAATblPK) object;
       if ((this.bbb== null && other.bbb!= null) || (this.bbb!= null && !this.bbb.equals(other.bbb))) {
           return false;
       }
       if ((this.ccc== null && other.ccc!= null) || (this.ccc!= null && !this.ccc.equals(other.ccc))) {
           return false;
       }
       return true;
   }
   @Override
   public String toString() {
       return "tmp.AAATblPK[ bbb= "+ bbb + ",ccc=" + ccc +" ]";
   }
}
   public AAATbl[] selectAll() {
       try {
           
           Query query;
           query = em.createNamedQuery("AAATbl.findAll");
           List<AAATbl> list;
           list = query.getResultList();   // ※ここで例外
           AAATbl[] ret;
           ret = (AAATbl[]) list.toArray(new AAATbl[list.size()]);
           return ret;
       } catch (NoResultException e) {
           return null;
       } catch (PersistenceException | DatabaseException databaseEx) {
           logger.fatal(e);
           return null;
       } catch (Exception e) {
           logger.fatal(e);
           return null;
       }
   }
```
### テーブル構造
実際のカラムは32個ありますが、"BBB","CCC"の2つに省略化して記載しています。
```
CREATE TABLE "DATABASE"."AAA_TBL"
  (   "BBB" VARCHAR2(1 BYTE),
       "CCC" VARCHAR2(14 BYTE)
) SEGMENT CREATION IMMEDIATE
 PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS NOLOGGING
 STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
 TABLESPACE "USERS" ;
```
###試したこと
テーブルの値にNULL値が含まれない場合は値を取得できる事を確認しています。
@PrimaryKey(validation=IdValidation.NONE)を追加してもみたのですが、状況は変わりませんでした。
###補足情報(言語/FW/ツール等のバージョンなど)
環境はNetBeans(8.1)+TomEE(7.0.1)
     JPAはEclipse Persistence Services - 2.6.3.v20160428-59c81c5を使用しています。
     JPAはEclipse Persistence Services - 2.6.3.v20160428-59c81c5を使用しています。
     DataBaseは Oracle 11.2.0.1.0を使用しています。
  • Java EE

    457 questions

    Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

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

hitokamu

hitokamu score 5

2016/09/07 13:22  投稿

JPAでのPrimaryKeyが無くNULLのあるテーブルへのアクセスについて
###JPAでのPrimaryKeyが無くNULLのあるテーブルへのアクセスについて
S2DAOで構築されたシステムをJPAで置き換えを試みています。 
テーブルの中にPrimaryKeyが無いものがあったのですが、稼働中のシステムの為データベースにPrimaryKeyを追加することはできません。
そこで全てのカラムをEmbeddableとして定義することとしたのですが、この方法ではデータの中に一つでもNULLが含まれる場合にDatabaseExceptionが発生してしました。
そもそもJPAではこのような使い方をすることが許されないのでしょうか?。
###発生している問題・エラーメッセージ
selectAllでAAA_TBLに対しSELECTを実行しようとすると、
カラムBBB,CCCにnullのデータが無い状態ではSELECTの実行結果を
取得できるのですが、nullが1件でもあると
「※ここで例外」とコメントを付けた箇所でDatabaseExceptionが発生してしまいます。
```
エラーメッセージ
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
###該当のソースコード
@Entity
@Table(name = "AAA_TBL")
@XmlRootElement
@NamedQueries({
   @NamedQuery(name = "AAA.findAll", query = "SELECT c FROM AAATbl c")})
public class AAATbl implements Serializable {
   private static final long serialVersionUID = 1L;
   @EmbeddedId
   protected AAATblPK aaaTblPK;
   public AAATbl() {
   }
   public AAATbl(AAATblPK aaaTblPK) {
       this.aaaTblPK= aaaTblPK;
   }
   public AAATbl(String bbb,String ccc) {
       this.aaaTblPK= new AAATblPK(bbb,ccc);
   }
   public AAATblPK getAAATblPK() {
       return this.aaaTblPK;
   }
   public void setAAATblPK(AAATblPK aaaTblPK) {
       this.aaaTblPK= aaaTblPK;
   }
 public class AAATblPK implements Serializable {
   @Size(max = 1 )
   @Column(name = "BBB")
   private String bbb;
   @Size(max = 1 )
   @Column(name = "CCC")
   private String ccc;
   public AAAPK() {
   }
   public AAAPK(String bbb,String ccc) {
       this.bbb = bbb;
       this.ccc = ccc;
   }
   public String getBbb() {
       return bbb;
   }
   public void setBbb(String bbb) {
       this.bbb = bbb;
   }
   public String getCcc() {
       return ccc;
   }
   public void setCcc(String Ccc) {
       this.ccc = ccc;
   }
 @Override
   public int hashCode() {
       int hash = 0;
       hash += (bbb != null ? bbb.hashCode() : 0);
       hash += (ccc != null ? ccc.hashCode() : 0);
       return hash;
   }
   @Override
   public boolean equals(Object object) {
       if (!(object instanceof AAATblPK)) {
           return false;
       }
       AAATblPK other = (AAATblPK) object;
       if ((this.bbb== null && other.bbb!= null) || (this.bbb!= null && !this.bbb.equals(other.bbb))) {
           return false;
       }
       if ((this.ccc== null && other.ccc!= null) || (this.ccc!= null && !this.ccc.equals(other.ccc))) {
           return false;
       }
       return true;
   }
   @Override
   public String toString() {
       return "tmp.AAATblPK[ bbb= "+ bbb + ",ccc=" + ccc +" ]";
   }
}
   public AAATbl[] selectAll() {
       try {
           
           Query query;
           query = em.createNamedQuery("AAATbl.findAll");
           List<AAATbl> list;
           list = query.getResultList();   // ※ここで例外
           AAATbl[] ret;
           ret = (AAATbl[]) list.toArray(new AAATbl[list.size()]);
           return ret;
       } catch (NoResultException e) {
           return null;
       } catch (PersistenceException | DatabaseException databaseEx) {
           logger.fatal(e);
           return null;
       } catch (Exception e) {
           logger.fatal(e);
           return null;
       }
   }
```
###試したこと
テーブルの値にNULL値が含まれない場合は値を取得できる事を確認しています。
@PrimaryKey(validation=IdValidation.NONE)を追加してもみたのですが、状況は変わりませんでした。
###補足情報(言語/FW/ツール等のバージョンなど)
環境はNetBeans(8.1)+TomcatEE(7.0.1)
環境はNetBeans(8.1)+TomEE(7.0.1)
     JPAはEclipse Persistence Services - 2.6.3.v20160428-59c81c5を使用しています。
  • Java EE

    457 questions

    Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る