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;
}
你觉得这是做的最好的方法是什么?