[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 メーリングリストの案内