<div dir="ltr">久保(jflute)さん<div><br></div><div>ご確認ありがとうございます。</div><div>いただいた件ですが、以下となりました。</div><div><br></div><div>結果として、Dが関連しておきていたと推察しております。</div><div>しっかりと確認せずお手数お掛けしました・・・。</div><div>→実はxmlファイル、diffmapなどを管理対象外として</div><div> 各自のローカル管理で運用していたのですが</div><div> ここが起因して差異が発生したと判断至りました。</div><div> ※開発上、上記ファイル群の差分は</div><div> 実影響ないとして除外しておりました・・・。</div><div><br></div><div>---------------------------------------------------------</div><div><span style="color:rgb(0,0,0);font-size:14px">A. 同じ人がローカルで何度か renewal すると入れ替わる?</span><br style="color:rgb(0,0,0);font-size:14px">→私の環境下では、繰り返し同様の差分となります。</div><div><br style="color:rgb(0,0,0);font-size:14px"><span style="color:rgb(0,0,0);font-size:14px">B. 別の人が renwal すると入れ替わる?</span></div><div>→差分発生がする人/しない人がいました。</div><div> ※Dに関連としております。<br style=""><br style="color:rgb(0,0,0);font-size:14px"><span style="color:rgb(0,0,0);font-size:14px">C. FK制約の名前は固定化されています? (SYSXXXではなく)</span><br style="color:rgb(0,0,0);font-size:14px"><span style="color:rgb(0,0,0);font-size:14px"> => FK制約が関係しているかどうかの切り分け</span></div><div>→replace-schema記載上は全て命名済み、</div><div> 且つ実スキーマ上も自動命名はないことを確認しております</div><div><br style="color:rgb(0,0,0);font-size:14px"><span style="color:rgb(0,0,0);font-size:14px">D. SchemaXML (</span><span style="color:rgb(0,0,0);font-size:14px">DBFluteクライアントのschemaフォルダの下のxm<wbr>l</span><span style="color:rgb(0,0,0);font-size:14px">) も差分出てる?</span><br style="color:rgb(0,0,0);font-size:14px"><span style="color:rgb(0,0,0);font-size:14px"> => XMLの前から入れ替わってるのか、</span><span style="color:rgb(0,0,0);font-size:14px">XMLの後で入れ替わってる<wbr>のかの切り分け</span><br></div><div class="gmail_extra">→発生しない人のdiffmap、及びschemaXMLを配置し<br></div><div class="gmail_extra"> renewal実行した所、差分発生がしなくなった</div><div class="gmail_extra"><br></div><div class="gmail_extra">>こちらの Oracle でのテスト環境では、<br>>何度 renewal しても変わったことがないので、<br></div><div class="gmail_extra">私も運用上いままでなかったので今回のご質問に至りましたが</div><div class="gmail_extra">改めて認識不足な点等痛感しました。</div><div class="gmail_extra">お時間いただき申し訳ありませんでした。</div><div class="gmail_extra"><br></div><div class="gmail_extra">そもそも差分が発生した原因は不明です・・・が、</div><div class="gmail_extra">上記より個人のXML、diffmapが影響及ぼしたと推察しております。</div><div class="gmail_extra">(現時点で回答としては腹落ちいたしました)</div><div class="gmail_extra"><br></div><div class="gmail_extra">※引き続きご利用させていただきます!</div><div class="gmail_extra"> ありがとうございます!</div><div class="gmail_extra"><br></div><div class="gmail_extra"><br></div><div class="gmail_extra">以上、よろしくお願いいたします。</div><div class="gmail_extra">--</div><div class="gmail_extra"><br><div class="gmail_quote">2017年12月12日 11:10 kubo <span dir="ltr"><<a href="mailto:dbflute@gmail.com" target="_blank">dbflute@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">久保(jflute)です<br>
<br>
成田さん、情報ありがとうございます。<br>
<span><br>
> * [foreign table]<br>
> - * Hoge1, Hoge2<br>
> + * Hoge2, Hoge1<br>
</span>なるほど、FKテーブルのメタデータの順序ですね。<br>
一応、プログラム的には順序を保持するようにしているのですが.<wbr>..<br>
メタデータの流れとしては以下のようになっています。<br>
<br>
1. Oracle JDBCからFK情報を取得<br>
=> DfForeignKeyExtractor<br>
=> このとき、内部的にソートし直している (immobilizeOrder()) ★ポイント<br>
<a href="https://github.com/dbflute/dbflute-core/blob/master/dbflute-engine/src/main/java/org/dbflute/logic/jdbc/metadata/basic/DfForeignKeyExtractor.java#L104" rel="noreferrer" target="_blank">https://github.com/dbflute/dbf<wbr>lute-core/blob/master/dbflute-<wbr>engine/src/main/java/org/dbflu<wbr>te/logic/jdbc/metadata/basic/D<wbr>fForeignKeyExtractor.java#L104</a><br>
<br>
2. SchemaXmlに保存<br>
=> 基本的にそのままの順序でXMLに保存<br>
<a href="https://github.com/dbflute/dbflute-core/blob/master/dbflute-engine/src/main/java/org/dbflute/logic/jdbc/schemaxml/DfSchemaXmlSerializer.java#L653" rel="noreferrer" target="_blank">https://github.com/dbflute/dbf<wbr>lute-core/blob/master/dbflute-<wbr>engine/src/main/java/org/dbflu<wbr>te/logic/jdbc/schemaxml/DfSche<wbr>maXmlSerializer.java#L653</a><br>
<br>
3. SchemaXmlを読み込んでTable.javaで保持<br>
=> XMLの順序をそのままキープ<br>
<a href="https://github.com/dbflute/dbflute-core/blob/7ff330c93ad05dc5ab7a69d28957c290989c793e/dbflute-engine/src/main/java/org/apache/torque/engine/database/model/Table.java#L1210" rel="noreferrer" target="_blank">https://github.com/dbflute/dbf<wbr>lute-core/blob/7ff330c93ad05dc<wbr>5ab7a69d28957c290989c793e/dbfl<wbr>ute-engine/src/main/java/org/a<wbr>pache/torque/engine/database/m<wbr>odel/Table.java#L1210</a><br>
<br>
※リンクはJava8版へのリンクですが、<br>
その辺のロジックはほとんど変わってないはずで。<br>
<br>
こちらの Oracle でのテスト環境では、<br>
何度 renewal しても変わったことがないので、<br>
ちょっと原因不明な状態です。<br>
(動作に支障はないにせよ、紛らわしいですよね)<br>
<br>
<br>
もし、分かれば以下の状況を教えて頂けると嬉しいです。<br>
<br>
A. 同じ人がローカルで何度か renewal すると入れ替わる?<br>
<br>
B. 別の人が renwal すると入れ替わる?<br>
<br>
C. FK制約の名前は固定化されています? (SYSXXXではなく)<br>
=> FK制約が関係しているかどうかの切り分け<br>
<br>
D. SchemaXML (DBFluteクライアントのschemaフォルダの下のxm<wbr>l) も差分出てる?<br>
=> XMLの前から入れ替わってるのか、XMLの後で入れ替わってる<wbr>のかの切り分け<br>
<br>
<br>
FK制約名を使ってないわけではないないのですが、<br>
ただ、ソートの優先度は低いのでFKカラムが変わってなければ、<br>
変わらないはずではありますが...<br>
<br>
// DfForeignKeyExtractor<br>
protected Comparator<String> createImmobilizedComparator(fi<wbr>nal<br>
Map<String, DfForeignKeyMeta> fkMap) {<br>
return new Comparator<String>() {<br>
public int compare(String o1, String o2) {<br>
// sorted by "column names + FK name" (overridden default<br>
sort is by FK name)<br>
// because FK name might be auto-generated name by DBMS,<br>
// no change FK but generated classes might be changed<br>
after ReplaceSchema<br>
// (basically FK name should be named fixedly...)<br>
// so uses local column names as first key here<br>
final DfForeignKeyMeta meta1 = fkMap.get(o1);<br>
final DfForeignKeyMeta meta2 = fkMap.get(o2);<br>
final Map<String, String> columnNameMap1 =<br>
meta1.getColumnNameMap(); // the map is sorted<br>
final Map<String, String> columnNameMap2 = meta2.getColumnNameMap();<br>
final String exp1 =<br>
Srl.connectByDelimiter(columnN<wbr>ameMap1.keySet(), "/") + "," + o1;<br>
final String exp2 =<br>
Srl.connectByDelimiter(columnN<wbr>ameMap2.keySet(), "/") + "," + o2;<br>
return exp1.compareTo(exp2);<br>
}<br>
};<br>
<div class="m_1623373337963147822gmail-m_3708856925671805872m_8998536757079006799HOEnZb"><div class="m_1623373337963147822gmail-m_3708856925671805872m_8998536757079006799h5">}<br>
______________________________<wbr>_________________<br>
Seasar-user mailing list<br>
<a href="mailto:Seasar-user@ml.seasar.org" target="_blank">Seasar-user@ml.seasar.org</a><br>
<a href="https://ml.seasar.org/mailman/listinfo/seasar-user" rel="noreferrer" target="_blank">https://ml.seasar.org/mailman/<wbr>listinfo/seasar-user</a><br>
</div></div></blockquote></div><br></div></div>