我想做的是让我的游戏!项目使用 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
谢谢!