2016-10-12 63 views
0

我正在學校項目上工作,我需要使用JPA。我有一些架構這樣的:如何讓Java JPA創建實體?

Customer.java

@Data 
@Entity(name = "CUSTOMER") 
public class Customer { 

@Id 
@Column(name = "CUSTOMER_ID", nullable = false) 
@GeneratedValue(strategy = GenerationType.AUTO) 
private long customerId; 

@Column(name = "NAME") 
private String name; 

@Column(name = "SURNAME") 
private String surname; 

@Column(name = "STREET") 
private String street; 

@Column(name = "CITY") 
private String city; 

@Column(name = "ZIP_CODE") 
private String zipCode; 

@Column(name = "COUNTRY") 
private String country; 

@OneToMany(mappedBy="customer",targetEntity=Order.class, fetch= FetchType.EAGER) 
private Collection orders; 
} 

而且Order.java

@Data 
@Entity(name = "ORDER") 
public class Order { 

@Id 
@Column(name = "ORDER_ID", nullable = false) 
@GeneratedValue(strategy = GenerationType.AUTO) 
private long orderId; 

@Column(name = "CUSTOMER_ID") 
@ManyToOne(optional=false) 
@JoinColumn(name="CUSTOMER_ID",referencedColumnName="CUSTOMER_ID") 
private long customerId; 

@Column(name = "DATE_SHIPPED") 
private Boolean dateShipped; 

@Column(name = "ORDER_DATE") 
private Date orderDate; 

@Column(name = "STATUS") 
private Date status; 

} 

現在,我已經定義persistance.xml

<?xml version="1.0" encoding="UTF-8" ?> 
<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_2_0.xsd" 
      version="2.0" xmlns="http://java.sun.com/xml/ns/persistence"> 
    <persistence-unit name="todos" transaction-type="RESOURCE_LOCAL"> 
     <class>b.model.Customer</class> 
     <class>b.model.Order</class> 
     <properties> 
      <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.ClientDriver"/> 
      <property name="javax.persistence.jdbc.url" 
         value="jdbc:derby://localhost:1527/baza;create=true" /> 


     </properties> 

    </persistence-unit> 
</persistence> 

現在我被困在那個地方,我不知道如何初始化EntityManager來實際讀取我的persistance.xml以連接到我的數據庫,並創建給定的實體。我已經試過如下:

private static EntityManagerFactory factory; 

public static void main(String[] args) { 
    factory = Persistence.createEntityManagerFactory(....); 
    EntityManager em = factory.createEntityManager(); 
} 

但說實話,我真的不知道應該怎樣進入createEntityManagerFactor()方法的構造。

任何幫助都比歡迎!

+0

已在屬性一看:'javax.persistence.schema-generation.database.action' – sanastasiadis

+0

您怎麼總結看任何JPA教程,清楚地顯示在那裏的持久性單元名稱? –

回答

1

你需要的是指定persistance-unit叫什麼名字,你所創建的EntityManagerFactory

factory = Persistence.createEntityManagerFactory("todos"); 
EntityManager em = factory.createEntityManager();