顯示具有 JPA 標籤的文章。 顯示所有文章
顯示具有 JPA 標籤的文章。 顯示所有文章

2012年9月18日 星期二

JPA 捉到舊資料的問題

如果你有一直捉到舊資料的問題,請使用
有用 BEAN Transaction ,請加上 begin(); commit();


Employee e = em.find(Employee.class, id);
try {
  em.refresh(e);
} catch(EntityNotFoundException ex){
  e = null;
}


參考文件: http://weblogs.java.net/blog/guruwons/archive/2006/09/understanding_t.html

2012年9月4日 星期二

fetch data from .Net entity framework , Java JPA

我個人覺得 LINQ比較讚

.net entity framework 使用 LINQ 技術


using (MIDSModel.MIDSEntities md = new MIDSModel.MIDSEntities())
                {
                    string query = (from c in md.WT_MIDS_OTH_DOC_TYPE
                                    where 1 == 1 && c.TYPE_ID == id1
                                    select c.TYPE_NAME).FirstOrDefault()
                                ;
               
                    ((Label)e.Row.FindControl("tNameL1")).Text = query;
                }


Java JPA


@PersistenceContext
 private EntityManager em;



List list1 = em.createQuery("select object(o) from WtSalNotify as o WHERE o.status = 'I' ORDER BY  o.notifyId ").getResultList();


JPA EntityManager merge, persist 的用法

persist ():用來新增一筆資料
merge (): 用來新增或修改一筆資料


Entity1 e = new Entity1();

// scenario 1
//交易開始
em
.persist(e);
e
.setField1(Value); 
// 交易結束後, Field1 會自動更新至資料庫

// scenario 2
// 交易開始
e
= new MyEntity1();
em
.merge(e);
e
.setField1(anotherValue); 
// 交易結束後,Field1 不會更新至資料庫,除非你再作一次 merge


// scenario 3
// 交易開始
e
= new Entity1();
Entity1 e2 = em.merge(e);
e2
.setField1(anotherValue); 
// 交易結束後,Field1 會自動更新至資料庫,但是指 e2 不是 e




參考文件
http://caterpillar.onlyfun.net/Gossip/EJB3Gossip/EntityManager.html
http://stackoverflow.com/questions/1069992/jpa-entitymanager-why-use-persist-over-merge
http://blog.csdn.net/javavenus/article/details/6289616

Java Persistence Transaction

關於於使用 JPA  transaction 的設定

http://en.wikibooks.org/wiki/Java_Persistence/Transactions