Спящий режим: проблема с отображением

У меня проблема со спящим режимом. (((

!!! Изображение со схемой базы данных !!!

Отображение (для геттера/сеттера я использую ломбок)

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",
        joinColumns=@JoinColumn(name="user_id"),
        inverseJoinColumns=@JoinColumn(name="project_id") )
        private @Getter @Setter  List<Project>  projects = new Vector();


@ManyToMany
@JoinTable(name="intervals",
        joinColumns=@JoinColumn(name="users_on_projects_id"),
        inverseJoinColumns=@JoinColumn(name="interval_id") )
        private  @Getter @Setter List<Interval> intervals = new Vector();
}

Проект.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",
        joinColumns=@JoinColumn(name="project_id"),
        inverseJoinColumns=@JoinColumn(name="user_id") )
  private @Getter @Setter  List<User>  users = new Vector();

@OneToMany
@JoinTable(name="intervals",
        joinColumns=@JoinColumn(name="users_on_projects_id"),
        inverseJoinColumns=@JoinColumn(name="interval_id") )
        private  @Getter @Setter List<Interval> intervals = new Vector();
}

Интервал.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",
        joinColumns=@JoinColumn(name="users_on_projects_id"),
        inverseJoinColumns=@JoinColumn(name="user_id") )
        private  @Getter @Setter User user;


@JoinTable(name="users_on_projects",
        joinColumns=@JoinColumn(name="users_on_projects_id"),
        inverseJoinColumns=@JoinColumn(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: вставьте в интервалы (finish_time, interval_type_id, start_time) значения (?,?,?)

Что не так с отображением?


person anonymous    schedule 21.06.2011    source источник


Ответы (1)


Ваше сопоставление выглядит немного странно (но могу ли я понять, что это неправильно). Что мне показалось странным, так это то, что оба отношения:

  • Пользователь -> Интервал
  • Проект -> Интервал

хранятся в «интервалах» одной и той же таблицы соединений, и в обоих случаях единственным случаем JoinColumn является «users_on_projects_id».

По моему это выглядит как копия и прошлый баг.

person Ralph    schedule 21.06.2011
comment
Итак, какое правильное сопоставление я должен использовать для этой базы данных: img12. imageshost.ru/img/2011/06/19/image_4dfdbd74a9911.png ? - person anonymous; 21.06.2011
comment
@anonymous: сначала удалите отношения между intervall и project, а затем посмотрите на так называемые ассоциации terry: docs.jboss.org/hibernate/core/3.5/reference/en/html/ - person Ralph; 21.06.2011