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控制的数据库中的本地插入是非常糟糕的概念,违反了很多规则 –