0
我有一個與休眠問題。 (((休眠:映射問題
!!! Image with Database Schema !!!
映射 (用於吸氣劑的/設定器的我使用Lombok的)
User.java
@Entity
@Table(name = "users")
public @Data class User
{
// Base Mapping
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "user_id")
@Getter @Setter Long user_id;
@Column(name = "user_name")
private @Getter @Setter String user_name;
@Column(name = "login")
private @Getter @Setter String login;
@Column(name = "password")
private @Getter @Setter String password;
// Releations Mapping
// Releations With Project
@ManyToMany(cascade={CascadeType.ALL})
@JoinTable(name="users_on_projects",
[email protected](name="user_id"),
[email protected](name="project_id"))
private @Getter @Setter List<Project> projects = new Vector();
@ManyToMany
@JoinTable(name="intervals",
[email protected](name="users_on_projects_id"),
[email protected](name="interval_id"))
private @Getter @Setter List<Interval> intervals = new Vector();
}
Project.java
@Entity
@Table(name = "projects")
public @Data class Project
{
// Base Mapping
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name ="project_id")
private @Getter @Setter Long project_id;
@Column(name ="project_name")
private @Getter @Setter String project_name;
// Releations Mapping
// Releations With User
@ManyToMany(cascade={CascadeType.ALL})
@JoinTable(name="users_on_projects",
[email protected](name="project_id"),
[email protected](name="user_id"))
private @Getter @Setter List<User> users = new Vector();
@OneToMany
@JoinTable(name="intervals",
[email protected](name="users_on_projects_id"),
[email protected](name="interval_id"))
private @Getter @Setter List<Interval> intervals = new Vector();
}
Interval.java
@Entity
@Table(name = "intervals")
public class Interval
{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "interval_id")
@Getter @Setter Long interval_id;
@Column(name ="start_time")
private @Setter @Getter
@Temporal(javax.persistence.TemporalType.TIMESTAMP)
Date start_time;
@Column(name ="finish_time")
private @Setter @Getter
@Temporal(javax.persistence.TemporalType.TIMESTAMP)
Date FinishTime;
@ManyToOne(cascade={CascadeType.ALL})
@JoinTable(name="users_on_projects",
[email protected](name="users_on_projects_id"),
[email protected](name="user_id"))
private @Getter @Setter User user;
@JoinTable(name="users_on_projects",
[email protected](name="users_on_projects_id"),
[email protected](name="project_id"))
private @Getter @Setter
@ManyToOne
Project project;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name="interval_type_id")
private @Getter @Setter IntervalType intervalType;
}
IntervalType.java
@Entity
@Table(name = "interval_type")
public class IntervalType
{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "interval_type_id")
@Getter @Setter Long interval_type_id;
@Column(name = "interval_type_name")
private @Getter @Setter String interval_type_name;
}
我可以讀取任何表任何數據,但不能寫入間隔表((
錯誤消息是: *字段 'users_on_projects_id' 沒有默認值* 和Hibernate生成此SQL代碼:(?,?,?) INSERT INTO區間(finish_time,interval_type_id,START_TIME)值
這有什麼錯映射?
那麼,什麼是正確的映射,我應該使用這個數據庫: http://img12.imageshost.ru/img/2011/06/19/image_4dfdbd74a9911.png ? – anonymous
@anonymous:首先刪除intervall和項目之間的關係,然後看看所謂的ternery關聯:http://docs.jboss.org/hibernate/core/3.5/reference/en/html/collections.html#集合三元 – Ralph