Jpa単方向多対一


自分で一方向多対一の例を作った.
主贴クラス(1)----回帖クラス(m)
     Topic(1)------Feedback(m)
      persistence.xml

  
  
  
  
  1. <?xml version="1.0" encoding="UTF-8"?> 
  2. <persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"> 
  3.     <persistence-unit name="JpaTest" transaction-type="RESOURCE_LOCAL"> 
  4.     <provider>org.hibernate.ejb.HibernatePersistence</provider> 
  5.     <class>com.entity.Topic</class> 
  6.     <class>com.entity.Feedback</class> 
  7.     <exclude-unlisted-classes>true</exclude-unlisted-classes> 
  8.     <properties> 
  9.         <property name="hibernate.connection.driver_class" value="oracle.jdbc.driver.OracleDriver"/> 
  10.         <property name="hibernate.connection.url" value="jdbc:oracle:thin:@localhost:1521:orcl"/> 
  11.         <property name="hibernate.connection.username" value="ningnian"/> 
  12.         <property name="hibernate.connection.password" value="ningningx"/> 
  13.         <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect"/> 
  14.         <property name="hibernate.show_sql" value="true" /> 
  15.         <property name="hibernate.hbm2ddl.auto" value="update"/>          
  16.     </properties> 
  17.     </persistence-unit> 
  18. </persistence> 

TopicEntity
 

  
  
  
  
  1. package com.entity;  
  2.  
  3. import java.io.Serializable;  
  4.  
  5. import javax.persistence.Column;  
  6. import javax.persistence.Entity;  
  7. import javax.persistence.GeneratedValue;  
  8. import javax.persistence.GenerationType;  
  9. import javax.persistence.Id;  
  10. import javax.persistence.Table;  
  11.  
  12. @Entity 
  13. @Table 
  14. public class Topic implements Serializable {  
  15.  
  16.     /**  
  17.      *   
  18.      */ 
  19.     private static final long serialVersionUID = 1L;  
  20.  
  21.     private int id;  
  22.     private String author;  
  23.     private String title;  
  24.     private String context;  
  25.  
  26.     @Id 
  27.     @Column 
  28.     @GeneratedValue(strategy = GenerationType.AUTO)  
  29.     public int getId() {  
  30.         return id;  
  31.     }  
  32.  
  33.     public void setId(int id) {  
  34.         this.id = id;  
  35.     }  
  36.  
  37.     @Column(length = 20)  
  38.     public String getAuthor() {  
  39.         return author;  
  40.     }  
  41.  
  42.     public void setAuthor(String author) {  
  43.         this.author = author;  
  44.     }  
  45.  
  46.     @Column(length = 20)  
  47.     public String getTitle() {  
  48.         return title;  
  49.     }  
  50.  
  51.     public void setTitle(String title) {  
  52.         this.title = title;  
  53.     }  
  54.  
  55.     @Column(length = 20)  
  56.     public String getContext() {  
  57.         return context;  
  58.     }  
  59.  
  60.     public void setContext(String context) {  
  61.         this.context = context;  
  62.     }  
  63.  
  64. }  

Feedback
 

  
  
  
  
  1. package com.entity;  
  2.  
  3. import java.io.Serializable;  
  4.  
  5. import javax.persistence.CascadeType;  
  6. import javax.persistence.Column;  
  7. import javax.persistence.Entity;  
  8. import javax.persistence.FetchType;  
  9. import javax.persistence.GeneratedValue;  
  10. import javax.persistence.GenerationType;  
  11. import javax.persistence.Id;  
  12. import javax.persistence.JoinColumn;  
  13. import javax.persistence.ManyToOne;  
  14.  
  15. @Entity 
  16. public class Feedback implements Serializable {  
  17.  
  18.     /**  
  19.      *   
  20.      */ 
  21.     private static final long serialVersionUID = 1L;  
  22.  
  23.     private int id;  
  24.     private String author;  
  25.     private String context;  
  26.     private Topic topics;  
  27.  
  28.     @Id 
  29.     @Column 
  30.     @GeneratedValue(strategy = GenerationType.AUTO)  
  31.     public int getId() {  
  32.         return id;  
  33.     }  
  34.  
  35.     public void setId(int id) {  
  36.         this.id = id;  
  37.     }  
  38.  
  39.     @Column 
  40.     public String getAuthor() {  
  41.         return author;  
  42.     }  
  43.  
  44.     public void setAuthor(String author) {  
  45.         this.author = author;  
  46.     }  
  47.  
  48.     @Column 
  49.     public String getContext() {  
  50.         return context;  
  51.     }  
  52.  
  53.     public void setContext(String context) {  
  54.         this.context = context;  
  55.     }  
  56.  
  57.     /**  
  58.      * cascade = CascadeType.MERGE--  cascade=CascadeType.PERSIST--  
  59.      * cascade=CascadeType.REMOVE--  cascade=CascadeType.REFRESH--  
  60.      *  -- , 。  ,  fetch =  
  61.      * FetchType.LAZY-- 。 fetch = FetchType.EAGER--  optional--boolean  
  62.      *  ,  optional=false,  
  63.      */ 
  64.     @ManyToOne(cascade = CascadeType.REFRESH, fetch = FetchType.LAZY, optional = false)  
  65.     /**  
  66.      * @JoinColumn(name = "top_id")   
  67.      */ 
  68.     @JoinColumn(name = "top_id")  
  69.     public Topic getTopics() {  
  70.         return topics;  
  71.     }  
  72.  
  73.     public void setTopics(Topic topics) {  
  74.         this.topics = topics;  
  75.     }  
  76.  
  77. }  

テストクラス
 

  
  
  
  
  1. @Test 
  2.     public void testFeedback() {  
  3.         EntityManagerFactory factory = Persistence  
  4.                 .createEntityManagerFactory("JpaTest");  
  5.         EntityManager manager = factory.createEntityManager();  
  6.  
  7.         Topic topic = new Topic();  
  8.         topic.setTitle("test");  
  9.         topic.setContext("this is test");  
  10.         topic.setAuthor("ning");  
  11.  
  12.         Feedback fk = new Feedback();  
  13.         fk.setAuthor("nian");  
  14.         fk.setContext("________");  
  15.         fk.setTopics(topic);  
  16.  
  17.         manager.getTransaction().begin();  
  18.         manager.persist(fk);  
  19.         manager.getTransaction().commit();  
  20.  
  21.     }