0
我有一個簡單的namednativequery,它在爲REST Web服務插入時生成新的PK。如何從Insert語句返回主鍵Mysql Java Eclipselink
Message.java
@NamedNativeQueries({@NamedNativeQuery(name="Message.send", query="INSERT INTO Leaf.Message (MessageID,Status,Message,Description,SentTime,ipAdd) VALUES\n" +
"(null,?Status,?Message,NOW()),?ipAdd;")})
AbstractFacade.java
public void CreateMessage(Message entity, InetAddress clientIP) {
try{
javax.persistence.Query q = getEntityManager().createNamedQuery("Message.send",entityClass);
q.setParameter("Status", "send");
q.setParameter("Message", entity.getMessage());
q.setParameter("ipAdd",clientIP.hashCode());
q.executeUpdate();
}
catch(Exception e){
String s= ""+e.getMessage().toString();
}}
如何獲得新創建的PK?它使用SELECT LAST_INSERT_ID()嗎?由於executeUpdate不返回結果?和ResultSet rs = q.getGeneratedKeys();這不是一個有效的語法。
只是想知道什麼是使用JPA一樣,如果它是JDBC的地步? – dic19
同意@ dic19。我的補充:在JPA控制的數據庫中的本地插入是非常糟糕的概念,違反了很多規則 –