2015-03-29 2 views
0

У меня есть ManyToOne отношения двух субъектовреляционная таблица вставки

@Entity(name = "foo") 
public class Foo { 

    @Id 
    @Column(name = "fooId") 
    private Long id; 

    @ManyToOne(fetch = FetchType.EAGER, 
      targetEntity = Bar.class, 
      cascade = { CascadeType.PERSIST, CascadeType.MERGE }) 
    @JoinColumn(name = "foo") 
    private Set<Bar> bars; 

    public Foo() { 
     bars = new HashSet<>(); 
    } 

    public Set<Bar> getBars() { 
     return bars; 
    } 

    public void setBars(Set<Bar> bars) { 
     this.bars = bars; 
    } 

} 

@Entity(name = "bar") 
public class Bar { 

    @Column(name = "fooId") 
    private Foo foo; 

    public Bar() {} 

} 

public class Persist { 

    @PersistenceContext(unitName = "myPersistUnit") 
    private EntityManager manager; 

    public static void main(String[] args) { 
     Foo f = new Foo(); 
     f.getBars().add(new Bar()); 

     manager.persist(f); 
    } 
} 

Но когда я называю Hibernate упорствовать метод, объект Foo сохраняется sucessfull, но с Bar лица я получил не-нулевое нарушение в поле обув;

Может ли кто-нибудь сказать мне, что мне не хватает?

+0

Вам не хватает остальной части кода. Нет разумного способа ответить на этот вопрос, не видя фактического кода. –

ответ

1

Вы должны установить ссылку на объект Foo в Entity Bar. Он решит вашу проблему.

Foo f = new Foo(); 
    Bar bar=new Bar(); 
    bar.setFoo(f); 
    f.getBars().add(bar); 
    manager.persist(f); 
Смежные вопросы