[英]@ManyToOne mapping in Hibernate not working
我有两个类,具有多对一映射的Invite
和Event
:一个事件有很多邀请。 以下是带有Hibernate批注的相关代码片段/ SQL:
db.Events
+-------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+----------------+
| event_id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | YES | | NULL | |
+-------------+--------------+------+-----+---------+----------------+
db.Invites
+-----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+----------------+
| invite_id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | YES | | NULL | |
| event_fk | int(11) | NO | MUL | NULL | |
+-----------+--------------+------+-----+---------+----------------+
DbInvite.java
@ManyToOne
private DbEvent event;
public DbInvite() {
}
public DbInvite(String name, DbEvent event) {
this.name = name;
this.event = event;
}
// getters and setters
DbEvent.java
@OneToMany(mappedBy = "event")
private Set<DbInvite> invites;
public DbEvent() {
}
public DbEvent(String name) {
this.name = name;
}
// getters and setters
最后,我-这就是大多数Hibernate示例似乎停止的地方-我以以下方式创建实例:
DbEvent dbEvent = new DbEvent(name);
DbInvite dbInvite = new DbInvite(name, dbEvent);
我收到的错误是:
org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: Unknown column 'event_event_id' in 'field list'
我要去哪里错了? 当主键明显是event_id
时, event_event_id
会从哪里来?
您需要为多对一指定连接列,否则JPA / Hibernate将采用默认值。
当您这样做时:
DbEvent dbEvent = new DbEvent(name);
//the id is setted in when persist into the db
dbEvent = someMethodThatPersistInDb(dbEvent);
//now the object have the id created in the db now insert the other one
DbInvite dbInvite = new DbInvite(name, dbEvent);
someMethodThatPersistInDb(dbInvite);
我希望可以为您提供帮助,也许您可以发布其余的映射类以检查代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.