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)
);
...

强调特殊和俱乐部管理员之间的关系。

在我的游戏中!项目我有一个 ClubAdmin 和一个具有以下内容的特殊课程:

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 关系是在 Special 表中创建一个新字段,其名称clubadmin_clubadmin_id代表外键,而不管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 回答