2015-04-16 1 views
0

У меня есть класс под названием Device.class, и я хочу иметь поле, которое является списком CommentObj.class. проблема в том, что это поле не сохраняется в базе данных (я использую Ebean). как это можно сделать?Сохранение списка объектов в игровой структуре

@Entity 
public class Device extends Model { 

@Id 
public Long id; 

@Constraints.MaxLength(50) 
@Constraints.Required 
public String serialNo; 

... 

public List<CommentObj> comments = new ArrayList<CommentObj>(); 

и

public class CommentObj extends Model { 

@Id 
public Long id; 


@Constraints.MaxLength(50) 
public String author; 

@Constraints.MaxLength(500) 
@Constraints.Required 
public String content; 

@Constraints.Required 
public Date date; 

public static Finder<Long, CommentObj> find = new Finder<>(Long.class, CommentObj.class); 

public CommentObj(String author, String content){ 
    this.author = author; 
    this.content = content; 
    date = new Date(); 
} 

} 

здесь структура устройства в базе данных (в соответствии с 1.sql). нет никаких признаков поля комментариев

create table device (
    id      bigint not null, 
    serial_no     varchar(255), 
    invent_no     varchar(255), 
    name      varchar(255), 
    device_type_id   bigint, 
    description    varchar(2000), 
    cal_date     timestamp, 
    cal_duration_in_months integer, 
    setup_id     bigint, 
    manufacturer_id   bigint, 
    constraint pk_device primary key (id)) 
; 
+0

Если между Device и CommentObj существует отношение «один-много», в таблице CommentObj должен быть только столбец 'device_id'. Когда вы запрашиваете список комментариев, в основном Ebean будет загружать строки в CommentObj, которые соответствуют этому внешнему ключу ... – Salem

+0

@salem, в этом случае мне нужно аннотировать CommentObj с Entity и добавить к нему поле Device. но на самом деле мне не нужно выводить устройство из commentObj. это одностороннее отношение. есть ли другое решение? решение без наличия device_id в моем комментарииObj? – behzad

ответ

1

Предполагая, что у вас есть в вашем comment_obj стола device_id, вы можете иметь однонаправленное отображение OneToMany, добавив следующие аннотации к вашему Device.class 'comments поля:

@OneToMany(cascade = CascadeType.ALL) 
@JoinColumn(referencedColumnName = "id", name = "device_id") 
public List<CommentObj> comments = new ArrayList<CommentObj>();