【问题标题】:Insert to DataBase Using EntityManager使用 EntityManager 插入数据库
【发布时间】:2013-05-07 19:17:43
【问题描述】:

我一直在寻找一种使用 Java 中的 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;
    }

你认为这是最好的方法吗?

【问题讨论】:

    标签: java database entitymanager


    【解决方案1】:

    我认为这是一个有几个可能答案的问题。我建议查看他们在 Java EE 6 教程示例中设置的一些方法。您可以在http://docs.oracle.com/javaee/6/tutorial/doc/giqst.html

    阅读相关内容

    【讨论】:

      猜你喜欢
      • 2012-05-09
      • 2010-10-22
      • 1970-01-01
      • 1970-01-01
      • 2013-04-15
      • 2018-08-14
      • 2013-08-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多