daybreaksnow's diary

私を私と呼びたい

[Linux]tarで圧縮元に絶対パスを指定する時、指定のディレクトリのみを圧縮する

以下のようにtarの第二引数に絶対パスを指定すると、以下のメッセージが表示される。

tar cvzf /home/hoge/files.tar.gz /home/hoge/files

tar: メンバ名から先頭の `/' を取り除きます

上記のfile.tar.gzを展開すると、home/hoge/filesというディレクトリ構造まで復元されてしまう。

files以下のみが展開されるようにするには、以下のように-Cを使う。

tar cvzf /home/hoge/files.tar.gz -C /home/hoge files
  • Cオプションをつけることにより、そのパスからの相対指定ができる。これにより、filesディレクトリのみを圧縮できる。

[Linux]さくらVPSのCentOSにRedmineをインストール

前回の続き
[Linux]さくらVPSのCentOSにApacheをインストール - daybreaksnow's diary


Redmineの公式サイトを参考にした。

Redmine 2.4をCentOS 6.4にインストールする手順 | Redmine.JP Blog

SELinuxを無効にする

セキュリティ管理用のモジュールらしい。
http://itpro.nikkeibp.co.jp/article/COLUMN/20070827/280414/

無効にしないでもインストールできるらしい(http://h2np.net/docs/redmine-selinux.html)が、さくらのデフォルトでdisabledになっていたので修正なし

EPELパッケージのインストール

EPEL:エンタープライズ Linux 用の拡張パッケージ

以下から最新のパッケージのパスを確認
http://dl.fedoraproject.org/pub/epel/6/x86_64/repoview/epel-release.html

最新のパッケージのパス
http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

インストール

#rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

さくらのデフォルトではインストール済みだった。

開発ツール(Cコンパイラ等)のインストール
yum groupinstall "Development Tools"

以下のメッセージが出た。メッセージを見る限り引数が不正なようだが、このまま進んでも問題なかった。

Warning: Group development does not have any packages.
No packages in any requested group available to install or update

※2014/8/29追記
日本語化している(/etc/sysconfig/i18nでLANG=ja_JP.UTF-8としている)場合、「開発ツール」としなければならない。

RubyとPassengerのビルドに必要なヘッダファイルなどをインストール
yum install openssl-devel readline-devel zlib-devel curl-devel libyaml-devel

Is this ok?と聞かれるので、y。
再度にComplete!と出て完了。

MySQLとヘッダファイルのインストール
yum install mysql-server mysql-devel
Apacheとヘッダファイルのインストール
yum install httpd httpd-devel
ImageMagickとヘッダファイル・日本語フォントのインストール

これは任意だが、ImageMagickは添付ファイルのサムネイル表示に使うということなので、入れておく。

yum install ImageMagick ImageMagick-devel
yum install ipa-pgothic-fonts

ipa-pgothic-fontsはデフォルトで入っているようだ。

Package ipa-pgothic-fonts-003.02-4.1.el6.noarch already installed and latest version
Nothing to do

Rubyのインストール

最新のtarballを落とす
http://www.ruby-lang.org/ja/downloads/

前世代の安定版: Ruby 2.0.0-p353 を落とした。
http://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p353.tar.gz

ビルド、インストール
tar zxvf ruby-2.0.0-p353.tar.gz 
cd ruby-2.0.0-p353
./configure --disable-install-doc
make
sudo make install
バージョン確認
$ruby -v
ruby 2.0.0p353 (2013-11-22 revision 43784) [x86_64-linux]
bundlerのインストール

bundlerとは:RubyGemの依存関係管理ツール
RubyGemとは:Rubyのライブラリ

#gem install bundler --no-rdoc --no-ri
Fetching: bundler-1.5.2.gem (100%)
Successfully installed bundler-1.5.2
1 gem installed

MySQLの設定

デフォルトキャラクタセットをutf8に設定
  • 編集対象
/etc/my.cnf
  • 修正内容
[mysqld]
default-character-set=utf8

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqldump]
default-character-set=utf8

MySQLを起動、自動起動ON

service mysqld start
chkconfig mysqld on

ここでmsqldの起動でエラーとなった。

ログを見てみる

  • コマンド
less /var/log/mysqld.log
  • 中身
[ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist

上記エラーメッセージでググってみると、mysql_install_dbコマンドを実行すればよいらしい。
root権限で実行、再度mysqldをstartすると、今度は起動に成功した。

rootにパスワード設定

このままだとmysql -u rootでパスワードなしでログインできてしまう。
rootにパスワードを設定する。

sudo mysqladmin -u root password [パスワード]

エンコード確認

mysqlにログイン後、以下のコマンドを実行

show variables like 'character_set%';

以下のように全てUTF-8になっていればOK。

+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

不要なユーザを除去

  • ユーザ確認SQL
use mysql;
select user from user;
  • 実行結果

以下のように名前なしユーザが二人いた。

mysql> select user from user;
+------+
| user |
+------+
| root |
|      |
| root |
|      |
| root |
+------+
5 rows in set (0.00 sec)

匿名のユーザを削除する。

delete from user where user = '';

Redmine用データベースとユーザーの作成

create database db_redmine default character set utf8;
grant all on db_redmine.* to user_redmine identified by 'パスワード';
flush privileges;

Redmineのインストール

以下からRedmineのtarballをダウンロード
http://www.redmine.org/projects/redmine/wiki/Download

解凍したらRedmineの配置先に移動する。

mv redmine-2.4.3 /var/lib/redmine

データベースへの接続設定

/var/lib/redmine/config/database.ymlを作成。
database.yml.sampleをコピーして、以下を修正した。

production:
  database: db_redmine
  username: user_redmine
  password: パスワード (Redmine用データベースとユーザーの作成で設定したもの)

configuration.ymlの設定

/var/lib/redmine/config/configuration.ymlを作成。
configuration.yml.sampleをコピーして、以下を修正した。

production:
    smtp_settings:
      address: "localhost"
      domain: 'サーバのIPアドレス'

  rmagick_font_path: /usr/share/fonts/ipa-pgothic/ipagp.ttf

ここで:の後の半角スペースがないと、後でrake db:migrateの実行時にエラーとなるので注意。

サーバのIPアドレスと書いたところは、サーバのFQDNとなっているが、ドメインを取っていないのでIPアドレスにした。これでいいかは不明。
SMTPの設定なので、メール通知を使わないなら適当でもOK?

Gemパッケージのインストール

redmineが必要とするライブラリを入れる。
redmineのインストールディレクトリ(/var/lib/redmine)で以下を実行

# bundle install --without development test

実行後、以下のメッセージが出た
rubyのバージョンは2.0.0のため、nothing to doに当てはまり、追加のインストールは必要ない。

Depending on your version of ruby, you may need to install ruby rdoc/ri data:

<= 1.8.6 : unsupported
 = 1.8.7 : gem install rdoc-data; rdoc-data --install
 = 1.9.1 : gem install rdoc-data; rdoc-data --install
>= 1.9.2 : nothing to do! Yay!

Redmineの初期設定とデータベースのテーブル作成

セッションデータ改竄防止用鍵の生成とテーブル作成

Redmineのインストールディレクトリで以下のコマンドを実行

bundle exec rake generate_secret_token
RAILS_ENV=production bundle exec rake db:migrate

RAILS_ENV=productionは単に環境変数にproductionを入れるだけ。
rubyではこの環境変数でdevelopment、test、productionなどのモードを切り替えるとのこと。

rakeはrubyのビルドツール。Ant的なものか?

db:migrateはその名前の通りDBのマイグレーションを行う。あらかじめ定義したDDLを実行する感じか?

bundle execと、直接rakeを呼ぶのでは、以下のような違いがある。

rake:Railsの共通のライブラリ保存場所から読みだす
bundle exec:プロジェクトのライブラリ保存場所から読み出す

参考:http://ka-zoo.net/2013/07/difference-of-rake-xxx-and-bundle-exec-rake-xxx/

Passengerのインストール

Passengerとは:apacherubyアプリを動かすためのapacheモジュール

gem install passenger --no-rdoc --no-ri
passenger-install-apache2-module

rdocとはJavaDoc的なものか。


文字化けが出たがそのままエンターで進んだ。

  • 出力結果
   LoadModule passenger_module /usr/local/lib/ruby/gems/2.0.0/gems/passenger-4.0.37/buildout/apache2/mod_passenger.so
   <IfModule mod_passenger.c>
     PassengerRoot /usr/local/lib/ruby/gems/2.0.0/gems/passenger-4.0.37
     PassengerDefaultRuby /usr/local/bin/ruby
   </IfModule>

Passengerの設定

  • 作成ファイル
/etc/httpd/conf.d/passenger.conf
  • 記述内容
# Passengerの基本設定。
# passenger-install-apache2-module --snippet を実行して表示される設定を使用。
#
 LoadModule passenger_module /usr/local/lib/ruby/gems/2.0.0/gems/passenger-4.0.37/buildout/apache2/mod_passenger.so
   <IfModule mod_passenger.c>
     PassengerRoot /usr/local/lib/ruby/gems/2.0.0/gems/passenger-4.0.37
     PassengerDefaultRuby /usr/local/bin/ruby
   </IfModule>

# Passengerが追加するHTTPヘッダを削除するための設定(任意)。
#
Header always unset "X-Powered-By"
Header always unset "X-Rack-Cache"
Header always unset "X-Content-Digest"
Header always unset "X-Runtime"

# Passengerのチューニング。
# TODO Phusion Passenger users guide(http://www.modrails.com/documentation/Users%20guide%20Apache.html)を参照。
PassengerMaxPoolSize 20
PassengerMaxInstancesPerApp 4
PassengerPoolIdleTime 3600
PassengerHighPerformance on
PassengerStatThrottleRate 10
PassengerSpawnMethod smart
RailsAppSpawnerIdleTime 86400
RailsFrameworkSpawnerIdleTime 0

apacheredmineを触れるようにする

chown -R apache:apache /var/lib/redmine

apacheは上記の通りapacheというユーザで操作するらしい。

Redmineを公開する(サブディレクトリでRedmineを実行)

redmineのインストールディレクトリへのシンボリックリンクを作成

ln -s /var/lib/redmine/public /var/www/html/redmine

/etc/httpd/conf.d/passenger.confに以下を追記。

RackBaseURI /redmine

apacheを再起動。

service httpd graceful

restartはhttpd プロセスを完全に停止してから再起動する。
gracefulは httpd プロセスの通信が終わるのを待って、順次新しい設定を反映した httpd を起動させる。

[PostgreSQL]パスワード入力無しでバッチファイルからコマンドを実行する

参考:
http://www.postgresql.jp/document/9.3/html/libpq-pgpass.html

Windowsの場合
  • 編集対象
%APPDATA%\postgresql\pgpass.conf
  • 編集内容

形式

[ホスト名]:[ポート番号]:[DB名]:[ユーザ名]:[パスワード]

ワイルドカードとして*も使える。

記述例

localhost:5432:*:hogeUser:hogePassword

DB名を決め打ちだと、以下のようなコマンドでパスワードが必要になってしまう。

dropdb -U postgres hoge

DB名の指定を*にしておけば、上記のようにpsqlでないコマンドでもパスワード無しで実行できる。

[Linux]さくらVPSのCentOSにApacheをインストール

Redmineを立てたかったので、まずはAapacheを動かす。


やったこと

参考:
基本設定 | 初心者でもわかる!さくらVPS | Sakura VPS 設定マニュアル
SERIES | アカベコマイリ

OSのバージョンを確認
  • コマンド
cat /proc/version
cat /etc/redhat-release 
  • 結果
Linux version 2.6.32-431.3.1.el6.x86_64 (mockbuild@c6b10.bsys.dev.centos.org) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC) ) #1 SMP Fri Jan 3 21:39:27 UTC 2014

CentOS release 6.5 (Final)
rootのパスワードをデフォルトのものから変更
passwd
パッケージをアップデート
 yum update
UIの日本語化
  • 編集対象
 vi /etc/sysconfig/i18n
  • 編集内容
 LANG=ja_JP.UTF-8

操作用ユーザ追加

useadd hoge
新規ユーザにパスワード追加
passwd ユーザ名
新規ユーザにwheel権限付与

wheelとは:http://itpro.nikkeibp.co.jp/word/page/10005502/

usermod -G wheel ユーザ名
suをwheelグループ内のユーザのみ可能とする。
  • 編集対象
vim /etc/pam.d/su
  • 修正内容

以下のコメントを解除

#auth required pam_wheel.so use_uid
sudoを有効に
  • 編集対象
visudo
  • 修正内容

以下のコメントを解除

# %wheel ALL=(ALL) ALL


ここから http://akabeko.me/blog/2012/04/revps-01-prepare-ssh-key/#revps-01-04 を参考

SSHの設定

TeraTermSSH接続用の鍵を作る

1.TeraTermを起動。
2.メニューバーのSetup→SSH KeyGenerator…
 鍵の種類:RSA
 ビット数:2048
 パスフレーズを入力し、「Save public key」「Save private key」ボタンを実行、保存。それぞれ「id_rsa.pub」「id_rsa」で保存する。
3.id_rsa.pubをサーバに転送。ログイン済みのTeraTermにドラッグ&ドロップ→SCPで転送できる。
転送したファイルはログインユーザのホームディレクトリ直下に置かれる
公開鍵のパーミッション設定

この鍵でログインしたいユーザのhomeディレクトリに移動する。
rootでログインしたくないので、最初に作ったユーザのhomeディレクトリにする。

mkdir .ssh
chmod 700 .ssh
mv id_rsa.pub .ssh/authorized_keys
chmod 600 .ssh/authorized_keys
SSHでのパスワードログインを無効化

パスワードだとブルートフォースとか怖いので、公開鍵でのみログイン可能とする。

  • 編集対象
vi /etc/ssh/sshd_config
  • 修正内容

以下の値をyesからnoに

PermitRootLogin no (rootのログイン)
PasswordAuthentication no (パスワードによるログイン)
sshを再起動
service sshd restart

なお、SSHのサービスの実体は /etc/rc.d/init.d/sshd にあり、以下のコマンドでも実行可能。

/etc/rc.d/init.d/sshd restart

ここから http://akabeko.me/blog/2012/04/revps-02-sudo-ssh-port/ を参考

SSHのポート変更

デフォルトの22だとアタックされやすいので、変えておく

  • 編集対象
sudo vi /etc/ssh/sshd_config
  • 編集内容

以下のコメントを外して、適当な数字にする。

#Port 22
sshを再起動
service sshd restart

これでSSHで22番で接続しようとすると、接続が拒否されました、と言われるようになる。

ここから http://akabeko.me/blog/2012/04/revps-03-iptables-logwatch/ を参考

iptablesを設定

SSH と HTTP 用の接続のみを許可する。

  • 編集対象(新規ファイルになる)
sudo vi /etc/sysconfig/iptables
  • 修正内容

以下をコピペ。この定義の元サイトはこちら。http://www.nina.jp/server/redhat/iptables/iptables.html
SSHのポート番号については適宜変更すること。(★の箇所)

# パケットフィルタリングでは、filterテーブルを使う
*filter
### :チェーン名 デフォルトポリシー [パケットカウント:バイトカウント]
# デフォルトポリシーをACCEPTにすると明示されないパケットは通過され、DROPにすると明示されないパケットは破棄される
# INPUTチェーン、送信先がローカルホストのパケットに適用される
:INPUT   ACCEPT [0:0]
# FORWARDチェーン、ローカルホストを経由するパケットに適用される
:FORWARD ACCEPT [0:0]
# OUTPUTチェーン、送信元がローカルホストのパケットに適用
:OUTPUT  ACCEPT [0:0]
# ユーザ定義チェーン
:RH-Firewall-1-INPUT - [0:0]

#ルール。
#-A チェーン名 マッチング条件 -j ターゲット
# ローカルホスト宛のパケットは、ユーザ定義チェーン"RH-Firewall-1-INPUT"でチェック
-A INPUT -j RH-Firewall-1-INPUT

# ローカルホスト経由のパケットは、ユーザ定義チェーン"RH-Firewall-1-INPUT"でチェック
-A FORWARD -j RH-Firewall-1-INPUT

# 受信インタフェースが"lo"(ループバック)ならば、通信を許可
-A RH-Firewall-1-INPUT -i lo -j ACCEPT

# プロトコルが"icmp"ならば、通信を許可
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT

# プロトコル番号が"50"(ESP)ならば、通信を許可
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT

# プロトコル番号が"51"(AH)ならば、通信を許可
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT

# プロトコルが"udp"かつ送信先ポートが"5353"(Multicast DNS)かつ送信先アドレスが"224.0.0.251"ならば、通信を許可
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT

# プロトコルが"udp"かつ送信先ポートが"631"(Internet Printing Protocol)ならば、通信を許可
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT

# プロトコルが"tcp"かつ送信先ポートが"631"(Internet Printing Protocol)ならば、通信を許可
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT


# 接続状態が"ESTABLISHED"または"RELATED"ならば、通信を許可
# これがないと通信ができない!
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT


# SSH, HTTP
# ★接続状態が"NEW"かつプロトコルが"tcp"かつ送信先ポートが"22"ならば、通信を許可
# SSHサーバへの接続要求パケット
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

# HTTPサーバへの接続要求パケット
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80    -j ACCEPT

# ここまでのチェックでひっかからなかったパケットは、ICMPパケット"host-prohibited"を返して接続拒否
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited

COMMIT

ここでコメント行の先頭に空白があったり、空行の先頭にスペースがあるとエラーとなる。

  • エラー出力例
iptables: ファイアウォールルールを適用中: iptables-restore v1.4.7: no command specified
Error occurred at line: 11
Try `iptables-restore -h' or 'iptables-restore --help' for more information.
                                                           [失敗]
iptablesの再起動
sudo /etc/rc.d/init.d/iptables restart
sudo iptables -L

修正前

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

修正後

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
RH-Firewall-1-INPUT  all  --  anywhere             anywhere

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
RH-Firewall-1-INPUT  all  --  anywhere             anywhere

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain RH-Firewall-1-INPUT (2 references)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
ACCEPT     icmp --  anywhere             anywhere            icmp any
ACCEPT     esp  --  anywhere             anywhere
ACCEPT     ah   --  anywhere             anywhere
ACCEPT     udp  --  anywhere             224.0.0.251         udp dpt:mdns
ACCEPT     udp  --  anywhere             anywhere            udp dpt:ipp
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ipp
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:22(SSHのポート番号)
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:http
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited


ここから http://akabeko.me/blog/2012/04/revps-04-apache/ を参考

apacheのインストール

# yum update -y install httpd
バージョンの確認
  • コマンド
httpd -v
  • 実行結果
Server version: Apache/2.2.15 (Unix)
Server built:   Aug 13 2013 17:29:28
セキュリティを向上させる
  • 編集対象
vi /etc/httpd/conf/httpd.conf
  • 修正内容
ServerTokens OSをServerTokens Prodに(サーバの情報をどれだけクライアントに返すか)
Options Indexes FollowSymLinksを、-Indexesとハイフンを付けて無効に(ファイル一覧ページが自動生成されないように)
ServerSignature OnをOffに(internal server error時にサーバの情報を出すかどうか)
  • 編集対象2
vi /etc/httpd/conf/welcome.conf
  • 修正内容

全てコメントアウト(行頭に#)する(ウェルカムページを非表示に。ウェルカムページにはOS名まで出てしまっている)

httpd.confの文法チェック
# apachectl configtest
apacheの起動
# service httpd start

これでブラウザに対し、接続しているさくらのサーバのIPアドレスを入力すれば、apacheのデフォルトページが表示される。

apache自動起動ON
chkconfig httpd on

[アイマス]12/08 LTP08ログ

細かい口調とかは適当。

クイズころあず

1問目 テーマ:テニス

ラリーは2年間、ぴょんきちは半年やってた。二人共ソフトテニスで、二人共後衛?
ぴょん吉は某アニメの影響で。

ぴょん:テニスって前衛と後衛があるじゃん?
もちょ:?(目を斜め上に向けた後、パチパチと5,6回まばたき。天使。)

・問題:テニス部に居たころあずが部室に書いた答えは?
ヒント:今の私。すごい事を書いた

ぴょん、衣吹:声優になる(「なる」と「なりたい」で微妙にニュアンスは違ってたはず)
もちょ:生きててよかった!(8thツアーでころあずが書いた言葉)→ナイスアピール
ラリー:ルノアール(写実的な絵を書いた、という意味)

正解:声優になれます。なれますようにだとちょっと願望が強いから。でもなれます、まで書いちゃったので。今も残ってるんじゃないかな。

2問目 友達

もちょ:友達っているの?(ラリーらゲストの方を剥いて)
→違う、どんな友達がいるの?って意味。

ころあずが上京して出来た初めての友達は?

衣吹:お医者さん。(ころあずと事務所が同期だったから聞いたことがある)
ラリー:声優
ぴょん:はっしー
もちょ:pityな人(類は友を呼ぶ)

ぴょん:そういうの書くんだったんだ、わたし思いっきり個人名出しちゃった
ころ:ぴょんきちはもっとちゃんと私の話を聞くべきでした。上京してから初、なので、はっしーではない

会場からpityと呼ばれて喜ぶころあず(アクセントの付け方を注文出してた?)

正解:医者

3問目 牛

牛のどこが好き?
ぴょん:私、牛のミルク好き
ラリー:肉
もちょ:顔
衣吹:肉
もちょ:肉のどの部位が好き?
かな:え…お腹?
もちょ:お腹ってどこ?

問題 ころあずが唯一牛で苦手なところ

ころあず ヒントは私の頭です。

衣吹:顔が怖い(イラスト付き)
ラリー:出産が激しい
ぴょん:あたまわるい?
もちょ:もーもー(イラスト付き。かわいい。)

ころ:ぴょんきち…
ぴょん:違う違う、ころあずは頭悪くない、牛は頭悪い、だから嫌いなのかと

もちょ もーもーって怒ってるみたいだから、嫌なのかなって
(モチョカワイイネーの雰囲気)
ころ:もちょ、私がいつも付けてるキーホルダーそんなんじゃないでしょ(牛の柄について?)

答え:牛という漢字。私の頭がバカだから、午と間違えそうになる

優勝はぴょん吉
ぴ ころあずお昼もこんな簡単な計算2回も間違えたんですよー

景品:高級な醤油

ライブパートは各自個人曲。
ラリーは環のNの私服をイメージした服を来ていた。
Thank youを歌う前に出てきた時は物販のTシャツを着てきた。

[Hibernate]特定のバージョンでone-to-manyタグにproperty-ref属性を指定できない

参考URL
Hibernate Mapping problem with unrelated collection - Stack Overflow
[HHH-2862] Collection is not associated with any session exception when doing an eager fetch on a non-unique collection. - Hibernate JIRA



問題となるHibernateのバージョン

3.1.3~3.2.5

問題となるhbm

<set name="items" inverse="true" fetch="join" cascade="all">
 <key property-ref="hogeCode">
	<column name="piyo_code" />
 </key>
 <one-to-many class="hoge.example.Piyo" />
</set>

keyタグのproperty-refを外す(=PKで参照する)と動くが、property-refがあると検索時に以下の例外が発生する

org.hibernate.HibernateException: collection is not associated with any session