使用JPA的多对一实体

使用JPA的多对一实体,jpa,maven-2,Jpa,Maven 2,我试图为下面给出的表结构创建一个实体 (id, name, task, leader_id) 此表提供了有关特定任务的团队用户及其团队负责人的信息 我这样写实体 @Column(name = "id", insertable = false, nullable = false, updatable = true) private Integer id; @Col umn(name = "name", nullable = false) private String tokenName; @

我试图为下面给出的表结构创建一个实体

(id, name, task, leader_id)
此表提供了有关特定任务的团队用户及其团队负责人的信息

我这样写实体

@Column(name = "id", insertable = false, nullable = false, updatable = true)
private Integer id;

@Col umn(name = "name", nullable = false)
private String tokenName;

@Column(name = "task", nullable = false)
private String task;

@ManyToOne(cascade = ALL, fetch = LAZY)
@JoinColumn(name = "leader_id")
private User leader;
alter table user
drop
foreign key FK60FD5D6395C4EEC2;

drop table if exists user;

create table user (
    id integer not null auto_increment,
    task varchar(255),
    name varchar(255) not null,
    leader_id integer,
    primary key (id)
);

alter table user
    add index FK60FD5D6395C4EEC2 (leader_id),
    add constraint FK60FD5D6395C4EEC2
    foreign key (leader_id)
    references user (id);
我通过hibernate3:hbm2ddl创建了ddl,看起来像这样

@Column(name = "id", insertable = false, nullable = false, updatable = true)
private Integer id;

@Col umn(name = "name", nullable = false)
private String tokenName;

@Column(name = "task", nullable = false)
private String task;

@ManyToOne(cascade = ALL, fetch = LAZY)
@JoinColumn(name = "leader_id")
private User leader;
alter table user
drop
foreign key FK60FD5D6395C4EEC2;

drop table if exists user;

create table user (
    id integer not null auto_increment,
    task varchar(255),
    name varchar(255) not null,
    leader_id integer,
    primary key (id)
);

alter table user
    add index FK60FD5D6395C4EEC2 (leader_id),
    add constraint FK60FD5D6395C4EEC2
    foreign key (leader_id)
    references user (id);
在通过maven sql插件导出此模式时,我遇到以下错误

[ERROR] Failed to execute:
alter table user
drop
foreign key FK60FD5D6395C4EEC2
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Column "FOREIGN" not found; SQL statement:

alter table user
drop
foreign key FK60FD5D6395C4EEC2 [42122-158]
我哪里做错了?

试试这个:

@ManyToOne(cascade = ALL, fetch = LAZY)
@JoinColumn(name = "leader_id")
@NotFound(action = NotFoundAction.IGNORE) 
public User getLeader()
{
  return leader;
}

hbm2ddl似乎正在为您的数据库生成无效的SQL。您确定指定了适当的方言吗。您的数据库是什么?您指定了哪种方言?@JB Nizet org.hibernate.dialante。H2Dialect@JBNizet H2(嵌入式数据库)则不知道。我检查了H2方言的源代码,它扩展了方言,在方法getDropForeignKeyString中返回“drop constraint”。可能您使用的是较旧版本的Hibernate。请尝试将映射移动到getter属性上,而不是字段声明上,即
getLeader(){..}
等。无法获取位图。我也有能手和能手variable@Gnanam将映射移到getter方法上。它跳过了错误,但表不是使用外键referenceTry创建的。将leader_id列分别映射为insertable和updateable set为false