2

私がやろうとしているのは、自分のプレイを作ることです! プロジェクトは、MySQL 上の既存のデータベースを使用します。データベースへの接続は問題ありません。私の問題は、MySQL データベースの外部キー制約を私の Play にリンクすることにあります! プロジェクトのクラスの @ManyToOne 関係。

したがって、基本的に私が現在データベースに持っているものは次のとおりです。

...
create table clubadmin  (
    clubadmin_id  int not null auto_increment,
    club_id int not null,
    user_id int not null,
    primary key (clubadmin_id),
    constraint fk_clubadmin_club_id foreign key (club_id) references club(club_id), 
    constraint fk_clubadmin_user_id foreign key (user_id) references user(user_id)
);

create table special(
    spec_id int not null auto_increment,
    spec_datetime datetime not null,
    spec_content varchar(500) not null,
    clubadmin_id int not null,
    primary key (spec_id),
    constraint fk_special_clubadmin_id foreign key (clubadmin_id) references clubadmin(clubadmin_id)
);
...

special と clubadmin の関係に重点を置いています。

私の遊びで!プロジェクト 次のものを持つ ClubAdmin と Special クラスがあります。

package models;

...

@Entity
@Table(name="special")
public class Special extends GenericModel
{
        @Id 
        @GeneratedValue(strategy=GenerationType.AUTO)
        @Required
        public Long spec_id;

        ...

        @ManyToOne
        @Required
        public Clubadmin clubadmin;

        public Special(Clubadmin admin,...)
        {
                ...
                this.clubadmin = admin;
                ...
        }
}

package models;

...

@Entity
@Table(name="clubadmin")
public class ClubAdmin extends GenericModel
{

        @Id 
        @GeneratedValue(strategy=GenerationType.AUTO)
        @Required
        public Long clubadmin_id;

        ...

        @OneToMany(mappedBy="clubadmin",cascade=CascadeType.ALL)
        public List<Special> specials;

        public ClubAdmin(...)
        {
                ...
                this.specials=new ArrayList<Special>();
                ...
        }
}

私が見る限り、Special クラスでの @ManyToOne 関係の作成は、制約clubadmin_clubadmin_idの存在に関係なく、外部キーを表すという名前の Special テーブル内に新しいフィールドを作成しているように見えます。fk_special_clubadmin_idこれは起こらないはずです。

Play! の作り方 独自の制約を作成しないように、データベース内の既存の制約を認識して使用しますか?

私はプレイを使用しています!1.2.4 および MySQL 5.3

ありがとう!

4

1 に答える 1

2

JoinColumn アノテーションを ManyToOne フィールドに追加して、jpa によって推測されたものとは異なる列名を指定します

何かのようなもの

@JoinColumn(name="clubadmin_id", referencedColumnName="clubadmin_id")
于 2012-09-13T05:36:32.650 に答える