[tuigwaa-user:290] Re: Oracle のテーブルの一部のカラムを Tuigwaa が取り込んでくれない。

Takashi Someda takashi.someda @ gmail.com
2007年 2月 7日 (水) 01:46:40 JST


染田です。

返信遅れて申し訳ありません。
以下 JIRA に登録しました。

https://www.seasar.org/issues/browse/TUIGWAA-169

> という気がしますが、HOGE_SUM_ID が取り込まれない
> のはなぜなんでしょう。。。

外部キーは通常のカラムとは読み込み方式が異なる為
読み込まれています。
ただし、通常のカラムは河西さんに実行して頂いたクラスと同じロジック
で、返されてくるカラムの Java のクラスと Tuigwaa の内部
表現をマップしているのですが、java.math.BigDecimal に
対応する内部表現が存在しないため読み込めない状態と
なっています。

この点については影響範囲が大きいのと、外部読み取り機能の
複数データベースの対応については検討事項が多い為、しばし
時間を頂けますと助かります。

代替案を出せずに申し訳ないのですが、
宜しくお願い致します。

Masaki Kasai wrote:
> 河西です。
> 
> 添付のColumnTypeExtracter.javaを実行したところ、
> 以下のとおりの結果になりました。
> 
> --------------
> RES_HIST_ID : java.math.BigDecimal
> USER_ID : java.math.BigDecimal
> HOGE_SUM_ID : java.math.BigDecimal
> HOGE_DATETIME : oracle.sql.TIMESTAMP
> HOGE_STATUS : java.lang.String
> HOGE_USER : java.lang.String
> RES_ACTION : java.lang.String
> --------------
> 
> HOGE_DATETIMEが、oracle.sql.TIMESTAMP なので、
> 取り込まれないんだろうなぁ。
> という気がしますが、HOGE_SUM_ID が取り込まれない
> のはなぜなんでしょう。。。
> 
> --
> Masaki Kasai
> 
> --- SOMEDA Takashi <someda @ 4dd.co.jp> wrote:
> 
>> 染田です。
>>
>> 例えば ID が Long
>> 型でないテーブルは読み込まれないなどの
>> 外部DBの読み込みには幾つか制約があります。
>> また、読み込んだテーブルのメタデータから Tuigwaa の
>> 内部表現にマッピングしているのですが、その際に
>> カラムの型によっては、内部表現のマッピングが生成されな
>>> ものについては読み込まれません。
>>
>> 手元に Oracle 環境が無いので恐縮ではありますが、
>> 添付のファイルの JDBC_DRIVER から、TARGET_TABLE_NAME
>> をお手元の環境に合わせて書き換えた後、コンパイルして
>> 結果をお知らせ頂けますでしょうか。
>>
>> よろしくお願い致します。
>>
>> Masaki Kasai wrote:
>>> 河西と申します。
>>>
>>> 既存のOracle 10gのテーブル群を外部DBとして指定し、
>>> テーブルを取り込んだのですが、
>>> 一部のカラムをTuigwaaが取り込んでくれません。
>>>
>>> 例えば、以下のようなテーブルだと、
>>> HOGE_SUM_ID、HOGE_DATETIME のカラムが、
>>> Tuigwaaに取り込まれません。
>>> ----------------------------------
>>> CREATE TABLE T_RES_HIST
>>> (
>>>    RES_HIST_ID NUMBER(10) PRIMARY KEY not null,
>>>    USER_ID NUMBER(10) not null,
>>>    HOGE_SUM_ID NUMBER(10) not null,
>>>    HOGE_DATETIME TIMESTAMP(6) not null,
>>>    HOGE_STATUS VARCHAR2(16) not null,
>>>    HOGE_USER VARCHAR2(20) not null,
>>>    RES_ACTION VARCHAR2(120) not null
>>> );
>>>
>>> ALTER TABLE T_RES_HIST
>>> ADD CONSTRAINT REF_USER491
>>> FOREIGN KEY (USER_ID)
>>> REFERENCES T_USER(USER_ID);
>>> CREATE INDEX REF34491 ON T_RES_HIST(USER_ID);
>>> ----------------------------------
>>>
>>>
>> 他にもカラムが取り込まれないテーブルがあるのですが。
>> NUMBER型、TIMESTAMP型のカラムがり込まれないように思い
>>>> す。
>>>
>> ただ、NUMBER型であっても、外部キーを指定しているカラム
>>>> 取り込まれています。
>>>
>>>
> 使用しているバージョンは、tuigwaa1.0.3(tuigwaa1.0.3_with_tomcat.zip)
>>> です。
>>> また、外部DBで使用するために、tuigwaa.properties
>> に、
>>> 以下を追加しています。
>>> hibernate.oracle.jdbc.driver.OracleDriver=
>>> org.hibernate.dialect.Oracle9Dialect
>>>
>>> 以上です。
>>> よろしくお願いします。
>>>
>>> --
>>> 河西
>>>
>>> ---
>>> Masaki Kasai
>>> masakas @ yahoo.co.jp
>>> masakas @ gmail.com
>>> _______________________________________________
>>> tuigwaa-user mailing list
>>> tuigwaa-user @ ml.seasar.org
>>>
>> https://ml.seasar.org/mailman/listinfo/tuigwaa-user
>>>
>>>
>>
>> -- 
>> SOMEDA Takashi
>> Four-Dimensional Data, Inc
>> email : someda @ 4dd.co.jp
>> www   : http://www.4dd.co.jp/
>>       : http://techscore.com/
>> phone : 050-5527-7945
>>
>>> import java.sql.Connection;
>> import java.sql.DriverManager;
>> import java.sql.ResultSet;
>> import java.sql.ResultSetMetaData;
>> import java.sql.Statement;
>> import java.util.Properties;
>>
>> public class ColumnTypeExtracter {
>> 	
>> 	private static final String SQL_PREFIX = "SELECT *
>> FROM ";
>> 	
>> 	private static final String JDBC_DRIVER =
>> "org.postgresql.Driver";
>> 	private static final String JDBC_URL =
>> "jdbc:postgresql://localhost:5432/tuigwaa";
>> 	private static final String JDBC_USER = "tuigwaa";
>> 	private static final String JDBC_PASSWORD =
>> "tuigwaa";	
>> 	private static final String TARGET_TABLE_NAME =
>> "buriuser";
>> 	
>> 	public static void main(String[] args) throws
>> Exception{
>> 		
>> 		String sql = buildSQL(TARGET_TABLE_NAME);
>> 		Connection con = getConnection();
>> 		
>> 		Statement stmt = con.createStatement();
>> 		ResultSet rs = stmt.executeQuery(sql);
>> 		ResultSetMetaData metaData = rs.getMetaData();
>> 		
>> 		int num = metaData.getColumnCount();
>> 		for (int i = 1; i <= num; i++) {
>> 			String columnName = metaData.getColumnName(i);
>> 			String columnClassName =
>> metaData.getColumnClassName(i);				
>> 			System.out.println(columnName + " : " +
>> columnClassName);
>> 		}														
>> 	}
>> 	
>> 	private static Connection getConnection() throws
>> Exception{			
>> 		Class.forName(JDBC_DRIVER);
>> 		Properties props = new Properties();
>> 		props.setProperty("user",JDBC_USER);
>> 		props.setProperty("password",JDBC_PASSWORD);		
>> 		Connection con =
>> DriverManager.getConnection(JDBC_URL,props);		
>> 		return con;				
>> 	}
>> 	
>> 	private static String buildSQL(String tableName){
>> 		StringBuffer buf = new StringBuffer();
>> 		buf.append(SQL_PREFIX);
>> 		buf.append(tableName);
>> 		buf.append(";");
>> 		return buf.toString();
>> 	}
>> 	
>> }
>>> _______________________________________________
>> tuigwaa-user mailing list
>> tuigwaa-user @ ml.seasar.org
>> https://ml.seasar.org/mailman/listinfo/tuigwaa-user
>>
> 
> _______________________________________________
> tuigwaa-user mailing list
> tuigwaa-user @ ml.seasar.org
> https://ml.seasar.org/mailman/listinfo/tuigwaa-user
> 


-- 
SOMEDA Takashi (takashi.someda @ gmail.com)
http://tuigwaa.sandbox.seasar.org/


tuigwaa-user メーリングリストの案内