2013-05-02 4 views
0

У меня есть две модели:Ebean ManyToOne NULLABLE присоединиться

@Entity 
@Table(name="table_entry") 
public class TableEntry extends Model { 

     @ManyToOne(fetch=FetchType.LAZY) 
     @JoinColumn(name="clone_id", referencedColumnName="clone_id") 
     public GeneData gene_data; 

     @Id 
     @GeneratedValue(strategy = GenerationType.IDENTITY) 
     public Long id; 

     @Constraints.Required 
     public String strain; 
     public String clone_id; 
     public String exp_type; 
     ... 

и

@Entity 
@Table(name="gene_data") 
public class GeneData extends Model { 
    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    public Long id; 

    @ManyToOne 
    public List<TableEntry> entry; 

    public String clone_id; 
     public String gene_name; 
     public String wb_id; 
     ... 

Я хотел бы присоединиться к table_entry на clone_id. Однако не каждая строка в table_entry имеет строку в gene_data. Поэтому я бы хотел, чтобы gene_data был нулевым, когда его не было найдено во время соединения. Это возможно?

Что я делаю неправильно? Я получаю эту ошибку

We got the following error: 
Referential integrity constraint violation: 
"FK_TABLE_ENTRY_GENE_DATA_1: 
PUBLIC.TABLE_ENTRY FOREIGN KEY(CLONE_ID) REFERENCES 
PUBLIC.GENE_DATA(CLONE_ID) ('Y56A3A.19')"; 

ответ

1

Я думаю, что есть ряд в table_entry с clone_id установлен в «Y56A3A.19», но нет строки в gene_data с этим значением.

+0

Да, я знаю об этом. Мой вопрос заключается в том, как сделать соединение таким, что если строка не существует в gene_data, возвращается только null – by0

+0

Я думаю, что невозможно отключить проверку целостности. Лучше, если вы исправите неправильные строки – MaFo