2015-03-29 2 views
0

Извините за мой английский. У меня есть 2 таблицы - сообщения (id, namePost, Text, idCat) и Category (id, nameCat). Я пользуюсь hibernate и рисунком DAO. Я создаю один-много в таблице Категория столбец CategoryId -> до ДолжностиidCat. Ссылка король работы, выход информации хорошо. Но когда я добавляю информацию в таблицу Сообщения, столбец idCat не добавляет, он ничего не содержит в базе данных. Я не могу добавить этот столбец (idCat) в столбиках. Я стараюсь делать это много Taime, но не успех (Использование аннотации одно ко многим не добавляет столбец (спящий режим)

Категория

@Entity 
    @Table(name="CATEGORY") 
    public class Category { 

     @Id @GeneratedValue(strategy=GenerationType.IDENTITY) 
     @Column(name = "ID", insertable=false, nullable=false) 
     private int id; 

     @Column(name="NAMECAT") 
     private String nameCat; 

     @Column(name="INDEX") 
     private boolean index; 

     @OneToMany(cascade = CascadeType.ALL, mappedBy = "category") 
     private Set<Posts> post; 
//then get and set 

Сообщений

@Id @GeneratedValue 
    @Column(name = "ID", unique = true, nullable = false) 
    private int id; 

    @Column(name="NAMEPOST", nullable = false) 
    private String namePost; 

    @Column(name="TEXT", nullable = false) 
    private String text; 

    @ManyToOne(fetch=FetchType.LAZY) 
    @JoinColumn(name = "IDCAT", insertable=false, updatable=false) 
    private Category category; 
//code 

интерфейсPostDao

public interface PostDao { 
    public void addPost(Posts post); 
} 

это сервлет

String[] catarrayid = request.getParameterValues("eachcat");//get cat what user use 
    String textpost = request.getParameter("textpost"); //text post 
    String namepost = request.getParameter("namepost"); //name post 

    if(!textpost.isEmpty() && !namepost.isEmpty() && catarrayid!=null) { 
    //open session    
    Session session = HibernateUtil.getSessionFactory().getCurrentSession(); 
        session.beginTransaction(); 

    Posts post = new Posts(); 
    //this value take id category    
    int id = 0; 
    for(String s : catarrayid) { 
    //get id 
     id = Integer.parseInt(s); 
    } 

    //create post object 
    post.setnamePost(namepost); 
    post.setText(textpost); 
    //this i add in table post value idCat    
    //how add in object post category id? 
    //post.add(???); 

    try{ 
    //and i add, bellow add method 
     Factory.getInstance().getPostDAO().addPost(post); 
     response.sendRedirect("indexadmin"); 
    }catch(Exception e) { 
         System.out.println(e); 
        }finally{ 
         if(session!=null && session.isOpen()) 
          session.close(); 
        } 

как это я Добавить метод

public void addPost(Posts post) { 
     Session session = null; 
     try{ 
      session = HibernateUtil.getSessionFactory().openSession(); 
      session.beginTransaction(); 
      session.save(post); 
      session.getTransaction().commit(); 

     } catch(Exception e) { outputError("addPost", e); 
     } finally{ closeSession(session); } 
    } 

ответ

1
@ManyToOne(fetch=FetchType.LAZY) 
    @JoinColumn(name = "IDCAT", insertable=false, updatable=false) 
    private Category category; 

Почему у вас insertable=false? В основном это говорит о том, что объект Post не несет ответственности за действие вставки для объекта Category. Попробуйте удалить insertable=false или изменить его на insertable=true (что я думаю по умолчанию).

+0

благодарит! глупая ошибка) – asdascascaedfa

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