- PR -

DBのCHAR型をEntityBeanで表現するには?

1
投稿者投稿内容
(株)ぽち
ぬし
会議室デビュー日: 2002/09/10
投稿数: 376
投稿日時: 2003-06-26 11:30
こんにちわ。

今回は以下のような問題にぶちあたっています。

[OS]
windwosXP
[jdk]
jdk1.3.1
[APサーバ]
weblogic7.0
[DB]
oracle8.1.6


DBにてprimary keyとなるカラムをCHAR型で定義しています。
対応するEntityBeanではStringでフィールドを定義しています。

例えば以下のような場合
CHAR(8):aaaa____

DBには上記のようにスペースで文字数を埋めています。

通常のJDBC経由では、これを検索するにあたっては
select * from tablename where columnname = 'aaaa';
で検索できます。

しかしEntityBeanのfindByPrimaryKeyを使用した場合
下記のような問題に当たりました。

・EntityBean(CMP2.0)が保持しているフィールドがtrimされて
 いないため、'aaaa'でfindByPrimaryKeyをかけても
 検索にヒットしない。

質問としては以下です。

・EntityBean(CMP2.0)を使用する場合、CHAR型はどのように扱うべきなのでしょうか?
 これはAPサーバ固有の問題なのでしょうか?
 # 他APサーバではtrimされた状態で保持できているとか

何か情報があれば教えて頂きたいです。

よろしくお願い致します。
(株)ぽち
ぬし
会議室デビュー日: 2002/09/10
投稿数: 376
投稿日時: 2003-07-02 14:48
どうやら色々調べて、聞いてみたりした結果

JDBCドライバの問題っぽいです。
ある社の独自JDBCドライバを使用しているAPサーバでは
この問題は発生しないそうです。

そこで切り分けのため、違う質問をさせてください。
# JDBCドライバ自体?それともバージョン?とか。

OracleのJDBCドライバを使用して普通にJDBCプログラミング
によりCHAR型の値を取得する際は取得値をtrimする必要があります。

Oracle以外のJDBCドライバの場合はどうなんでしょうか?
他のJDBCドライバでもtrimする必要があるのでしょうか?
それとも、ドライバによってはtrimする必要がないとか?

☆質問の種別としては「EJB」ではなくて「JDBC」になりました。

なぜこんなことを聞いているかというと、そもそもOracle
のドライバを使用している限りはダメなんじゃないのか?
という疑問があるからです。
# Oracle以外のものは使用したことないのでわからないのです。

Oracleがダメっていうなら、アプリケーション側でなんとか
対応するしかないかなと思っています。

よろしくお願いします。
1

スキルアップ/キャリアアップ(JOB@IT)