我一直在寻找一种使用Java中的EntityManager类与我的数据库进行交互的方法。
问题与我在DB中定义的这两个表有关:
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)的新Entity类才能使用merge()或persist()方法?
我是否必须创建另一个Entity类以将新行插入我的CHILD_TABLE?
要检索包含现有数据的List,我有一个类似这样的方法:
@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;
}
你认为这是最好的方法吗?
答案 0 :(得分:0)
我认为这是一个有几个可能答案的问题。我建议在Java EE 6教程示例中查看它们设置的一些方法。您可以在http://docs.oracle.com/javaee/6/tutorial/doc/giqst.html
了解相关信息