0
我一直在尋找一種方法來使用Java中的EntityManager類與我的數據庫進行交互。使用EntityManager插入到數據庫
的問題是關於我在我的數據庫中定義這兩個表:
PARENT_TABLE:
PK_ONE
PK_TWO
CHILD TABLE:
PK_ONE
COLUMN
PK_TWO
這裏是我到目前爲止所。
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.SecondaryTable;
import javax.persistence.Table;
import javax.persistence.PrimaryKeyJoinColumn;
@Entity
@Table(name="PARENT_TABLE")
@SecondaryTable(name="CHILD_TABLE", pkJoinColumns={
@PrimaryKeyJoinColumn(name="PK_ONE"),
@PrimaryKeyJoinColumn(name="PK_TWO")})
public class ExampleTbl implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name="PK_ONE")
private String pkOne;
@Id
@Column(name="COLUMN", table="CHILD_TABLE")
private String column;
@Column(name="PK_TWO")
private String pkTwo;
//GETTERS AND SETTERS
}
我的問題是:
爲了能夠插入到PARENT_TABLE一個新行,我必須創建一個只有兩個字段(PK_ONE,PK_TWO),以能夠使用新的實體類merge()或persist()方法?
我將不得不創建另一個實體類來插入一個新行到我的CHILD_TABLE?
檢索與現有的數據列表我有一個方法是這樣的:
@Transactional(readOnly = true)
public List<ExampleTbl> getFoldersList() {
em = emf.createEntityManager();
Query q = em.createQuery("SELECT e FROM ExampleTbl e WHERE e.pkTwo = :pkTwo ORDER BY e.pkOne");
q.setParameter("pkTwo", "My Test");
List<ExampleTbl> result = q.getResultList();
return result;
}
你覺得這是做的最好的方法是什麼?