« Return to Thread: JPA(Toplink)でMS SQLのマッピングを変更するには?

Re: JPA(Toplink)でMS SQLのマッピングを変更するには?

by 苑田義明 :: Rate this Message:

Reply to Author | View in Thread

原田様

苑田です。

現在のPersistence.xmlを見てみると、

    <provider>oracle.toplink.essentials.PersistenceProvider</provider>

となっています。
最初にNB6.0.1でこのプロジェクト用に永続化ユニットを作成した際、
これを選んだ記憶がありますが、原田様が指摘されているクラスが
あったかどうか、よく覚えていません。

とりあえずお教えいただいたものに書き換えてためしてみましたが、

Exception in thread "AWT-EventQueue-0"
javax.persistence.PersistenceException: No Persistence provider for
EntityManager named <PUの名前>
        at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:89)
        at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:60)


というエラーが出てきます。

08/03/25 に harada<harada.Kazuy-02@...> さんは書きました:

> 原田です
>
> MS SQLは使ってないので、単なる質問ですが、
> persistence.xmlのtoplink.platform.class.nameを
> oracle.toplink.essentials.platform.database.SQLServerPlatform
> にしても、SQL Serverには日本語で格納されないということでしょうか?
>
> 以上
> ----- Original Message -----
> From: <sk8er.ys@...>
> To: <nbdiscuss_ja@...>
> Sent: Tuesday, March 25, 2008 11:47 AM
> Subject: [nbdiscuss_ja] JPA(Toplink)でMS SQLのマッピングを変更するには?
>
>
> > いつもお世話になっている苑田です。
> >
> > NB6.0.1とToplink Essential、MS SQL 2005という組み合わせでの質問です。
> > (J2SDK5-12を使っています)
> >
> > ToplinkはOracleのサイトからダウンロードした最新のもの
> > glassfish-persistence-installer-v2-b41.jar
> >
> > またMS SQL 2005のJDBCは
> > sqljdbc_1.2.2828.100_enu.exe
> >
> > を使っています。
> >
> > 【問題】
> > ToplinkによるEntity Beanを、例えば以下のようにします。
> >
> > public class person implements Serializable{
> >
> > @Entity
> >     :
> >  private String name;
> >  private int      age;
> >     :
> >  @
> >  public void setName(String name){
> >     this.name = name;
> >  }
> >  public String getName(){
> >     return name;
> >  }
> >
> > }
> >
> > これでMS SQL 2005側にPERSONというテーブルが出来て、
> > フィールドに、NAMEとAGEができるわけですが、問題は、MS SQL 2005側の
> > NAMEの型が、
> >
> > varchar(255);
> >
> > なために、NAMEで日本語の名前を扱おうとしても、データベースマネージャで
> > フィールドを覗いてみると、"?????"となっています。
> >
> > 問題の所在は、MS SQL 2005で日本語文字列を扱う場合は、
> > 上記のvarcharを使う場合は
> >
> > varchar -> nvarchar
> >
> > にしないといけないし、あるいはvarcharでなければ、ntext, などの型を
> > 使わなければいけないというところにあるようです。
> >
> > 少なくとも、ToplinkによってMS SQL側にできるフィールドがvarcharの
> > ままでは、そこに日本語文字列を入れることが出来ません。
> >
> > 【質問】
> >
> > なるべく現在のJPAのスタイル(コーディングの手間というか)を維持しつつ
> > 最も少ない手間でMS SQL 2005側に日本語文字列を入れられるように
> > するにはどうしたらよいでしょう?
> >
> > いろいろと調べたところ、以下のような方法がありそうです。
> >
> > (1)新たにマッピングを自分で作る。
> >
> > Toplinkでサポートされていないデータベースを使う場合は、
> > oracle.toplink.helperとかといったクラスを拡張して、マッピングの
> > 指定を明示的に行うことが出来るようです。
> >
> > ただ、どれだけ手間が発生するか(あるいはoverrideすべき処理が
> > どれくらいあるのか)が見えないので、手を出していません。
> >
> > (2)マッピングのxmlを変更する。
> >
> > config/database-schema/<db>.xml
> >
> >  というファイルがあるので、そこのMS SQLに該当するxmlファイルをいじって
> > マッピングを変更する。
> >
> > これはどうもOracle JDeveloperとかを使っている場合の、アプリケーションサーバ
> >
> > 側の設定のようなので、今回のようにJPAをスタンドアローンで使う場合は
> > 使えないようです。
> >
> > (3)その他
> >
> > たとえばnameに値を入れる場合に、????にならない文字列に変換して
> > 入れ、取り出すときに所望の文字コードに戻すよう、Entity Beanの
> > getter/setterの中に処理を書く。
> >
> > たとえば、アプリケーションとしてはShitf-JISを扱い、データベース内では
> > eucにするなど。
> >
> > これはやってみたのですが、うまくいきませんでした。(つまり????になる)
> >
> > だめもとで、N'山田太郎' なんて具合に、あのNをつけても見ましたが、
> > まぁこれはだめでした。(N'??????' なんて文字列が入ってしまう)
> >
> > 単純な話、ToplinkとMS SQL 2005という組み合わせのときに、日本語の
> > 文字列を扱えるようにしたいだけなので、他に方法があればなんでもかまいません。
> >
> > (そもそも、ToplinkはOracleのもの。MS製品と組み合わせるところに
> > 無理があるのか。。。。)
> >
> > でも、結構ありがちなケースだと思いますし、文字列で日本語を、なんてのは
> > あたりまえに出てくる話だと思うのですが。。。。
> >
> > 結構いろいろとネットを検索したのですが、いまのところ該当の情報には
> > あたっていません。(Oracle Toplinkのフォーラムとか、MS SQLのフォーラム
> > など。。。)
> >
> > どうかお知恵お貸しいただけると助かります。
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: nbdiscuss_ja-unsubscribe@...
> > For additional commands, e-mail: nbdiscuss_ja-help@...
> >
> >
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: nbdiscuss_ja-unsubscribe@...
> For additional commands, e-mail: nbdiscuss_ja-help@...
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: nbdiscuss_ja-unsubscribe@...
For additional commands, e-mail: nbdiscuss_ja-help@...

 « Return to Thread: JPA(Toplink)でMS SQLのマッピングを変更するには?

LightInTheBox - Buy quality products at wholesale price