2016-04-04 65 views
0

all。所以。我有一個問題:對於產生生成null id爲:class hibernate

空ID:類Notebook.Enities.Telephone

是的,這個問題已經到計算器,但我在這裏。爲什麼?我通過xml映射安排。

我Note.hbm.xml

<?xml version='1.0' encoding='utf-8'?> 
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> 
<hibernate-mapping> 

    <class name="Notebook.Enities.Note" table="note" schema="notebase"> 
     <id name="id" type="java.lang.Integer"> 
      <column name="Id" not-null="true"/> 
      <generator class="identity"/> 
     </id> 
     <one-to-one name="telephoneId" class="Notebook.Enities.Telephone" cascade="save-update"/> 
     <one-to-one class="Notebook.Enities.Description" name="descriptionId" cascade="save-update"/> 
     <one-to-one class="Notebook.Enities.Human" name="humanId" cascade="save-update"/> 
     <many-to-one class="Notebook.Enities.Group" name="group" fetch="join" lazy="false"> 
      <column name="Group" not-null="true"/> 
     </many-to-one> 
    </class> 
</hibernate-mapping> 

接下來,我Telephone.hbn.xml(電話 - 手機RU-郎。)

<?xml version='1.0' encoding='utf-8'?> 
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> 
<hibernate-mapping> 

    <class name="Notebook.Enities.Telephone" table="telephone" schema="notebase"> 
     <id name="id" type="java.lang.Integer"> 
      <column name="Id"/> 
      <generator class="foreign"> 
       <param name="property">note</param> 
      </generator> 
     </id> 
     <one-to-one name="note" class="Notebook.Enities.Note" constrained="true"/> 
     <property name="telephone" column="Telephone"/> 
     <property name="descripton" column="Descripton"/> 
    </class> 
</hibernate-mapping> 

JSF頁面Text.xhtml(其他所有對象類似電話)

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:h="http://xmlns.jcp.org/jsf/html" 
     xmlns:ui="http://xmlns.jcp.org/jsf/facelets" 
     xmlns:f="http://xmlns.jcp.org/jsf/core" 
     xmlns:p="http://primefaces.org/ui" 
> 

<body> 
<f:view> 
    <h:messages errorStyle="color: red" infoStyle="color: green" layout="table"/> 
     <h:form> 
     <h:panelGrid columns="2"> 

      <h:outputText value="Фамилия:"/> 
      <h:inputText value="#{human.family}"/> 
      <h:outputText value="Имя:"/> 
      <h:inputText value="#{human.name}"/> 
      <h:outputText value="Отчество:"/> 
      <h:inputText value="#{human.secondName}"/> 
      <h:outputText value="Дата:"/> 
      <h:inputText value="#{human.birthday}"> 
       <f:convertDateTime type="date" pattern="dd-MM-yyyy"/> 
      </h:inputText> 
      <h:outputText value="Телефон:"/> 
      <h:inputText value="#{telephone.telephone}"/> 
      <h:outputText value="Группа:"/> 
      <h:inputText value="#{group.group}"/> 
      <h:outputText value="Описание:"/> 
      <h:inputText value="#{description.text}"/> 

     </h:panelGrid> 

     <h:commandButton action="#{notebookFacade.createNote(human,telephone,group,description)}" value="Save" /> 
     <h:commandButton action="descriptionList" value="Cancel"/> 
     <br/> 
    </h:form> 
</f:view> 
</body> 
</html> 

和方法createNote();

public void createNote(Human human, Telephone telephone, Group group, Description description){ 
    Note note = new Note(); 
    note.setTelephoneId(telephone); 
     telephone.setNote(note); 
    note.setHumanId(human); 
     human.setNote(note); 
    note.setGroup(group); 
    note.setDescriptionId(description); 
     description.setNote(note); 
    getNoteDAO.addNotes(note); 
    System.out.println("Add work!"); 
} 

而addNotes();

public void addNotes(Note note) { 
    Session session = HibernateUtil.getSessionFactory().openSession(); 
    session.beginTransaction(); 
    session.save(note); 
    session.getTransaction().commit(); 
    System.out.println("This function is worked"); 
    session.close(); 
} 

我的方案:enter image description here

如果您需要別的東西,請。並請幫助。

回答

0

以下鏈接解釋瞭如何將hibernate關係與xml配置集成,因此請注意。

Hibernate XML Mapping Example

還需要添加@TransactionaladdNotes服務類方法

@Transactional 
public void addNotes(Note note) { 
    Session session = HibernateUtil.getSessionFactory().openSession(); 
    session.beginTransaction(); 
    session.save(note); 
    session.getTransaction().commit(); 
    System.out.println("This function is worked"); 
    session.close(); 
} 

希望你解決您的問題!