Я хочу сохранить атрибуты на ассоциативной таблице в спящем режиме и не знаю, как это сделать.Как сохранить атрибуты в ассоциативной таблице с помощью JPA и Hibernate?
Я придумал следующий пример: у меня есть таблица USERS, таблица MEDIA (где хранятся фильмы и книги) и ассоциативная таблица USER_MEDIA, где я храню, если ПОЛЬЗОВАТЕЛЬ «видел» СМИ и рейтинг заданный пользователем.
Проблема: отображение скорости. Я использовал XML для выполнения сопоставления, хотя я также могу использовать аннотации, если это облегчит вам работу.
Ниже приведены мои фрагменты кода:
create table USER(
UUID bigint not null auto_increment,
NAME text,
primary key (UUID)
);
create table MEDIA(
MEDIAID bigint not null auto_increment,
NAME text,
primary key (MEDIAID)
);
create table USER_MEDIA(
UUID bigint not null,
MEDIAID bigint not null,
RATE double,
RATE_FORMAT varchar(2),
primary key (UUID, MEDIAID)
);
alter table USER_MEDIA add foreign key (UUID) REFERENCES USER(UUID);
alter table USER_MEDIA add foreign key (MEDIAID) REFERENCES MEDIA(MEDIAID);
JAVA
public class User {
private Long id;
private String name;
private Double rating;
private String ratingFormat;
private Set<Media> medias = new HashSet<Media>();
//getters e setters
}
public class Media {
private Long id;
private String name;
private Double rate;
private String rateFormat;
private Set<User> users = new HashSet<User>();
//getters e setters
}
hbm.xml
<hibernate-mapping package="package.model">
<class name="User" table="USER">
<id name="id" column="UUID">
<generator class="native" />
</id>
<property name="name" type="text" />
<set name="medias" table="USER_MEDIA" cascade="all">
<key column="UUID" />
<many-to-many column="MEDIAID" class="package.model.Media" />
</set>
</class>
<class name="Media" table="MEDIA">
<id name="id" column="MEDIAID">
<generator class="native" />
</id>
<property name="name" type="text" />
<property name="rate" type="double" />
<property name="rateFormat" type="text" column="RATE_FORMAT" />
<set name="users" table="USER_MEDIA" cascade="all">
<key column="MEDIAID" />
<many-to-many column="UUID" class="package.model.User" />
</set>
</class>
</hibernate-mapping>
Я не уверен, что не так в вашем коде, можете ли вы быть более конкретным. И я думаю, что аннотации намного проще. – mbaydar