2012-04-28 3 views
-3

пожалуйста, пожалуйста, вы можете помочь мнеКак вставить данные в мою базу данных с помощью entitymanger?

Я два Entitys Студента и Адрес releted родством @OneToOne

@Entity 
public class Student implements Serializable { 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private int idstudent; 
    private String firstname; 
    private String name; 
    @OneToOne 
    private Adress adress; 
    //setters and getters 
} 

public class Adress implements Serializable { 
    private static final long serialVersionUID = 1L; 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private int idadress; 
    private String street; 
    private String codezip; 
    @OneToOne 
    private Student student; 
    //getters and setters 
} 

Я хочу, чтобы вставить данные с помощью сущности кормушку Я стараюсь, что им dosn't работы

@PersistenceContext(unitName = "JPADD") 
EntityManager em; 
Student student = new Student(); 
student.setfirstname("cc"); 
student.setname("cc"); 
Adress adress = new Adress(); 
adress.setstreet("ccccccccc"); 
adress.setstudent(student); 
em.persist(adress) 
em.persist(student); 

помочь мне pleaaaaaaaaase :)

+0

Код, который я опубликовал, хорошо работает, когда я удаляю adress.setstudent (student) – wadii

+0

Проблема не в том, что она не создает экземпляр EntityManger – wadii

+0

Не обращал внимания на аннотацию, [Stack Overflow - это не Mind Reader или Crystal Ball] (http://meta.stackexchange.com/a/128551/172496). –

ответ

0

Я пытаюсь угадать, что это ваша проблема:

Вы пытаетесь сохранить адрес, в котором есть поле Student.

Теперь, похоже, у вас нет каскадных атрибутов для вашего сопоставления, поэтому проблема заключается в том, что вы пытаетесь сохранить адрес, у которого есть ученик, которого нет в вашей базе данных.

Попробуйте поменять местами последние две строки, чтобы сохранить ученика перед адресом.

Вы можете также рассмотреть вопрос об изменении

@OneToOne 
private Student student; 

в

@OneToOne(cascadeType = Cascade.PERSIST) 
private Student student; 

Имейте в виду, что я просто пытаюсь угадать, потому что у меня нет достаточно деталей, чтобы помочь Вам!

Смежные вопросы