我似乎无法在任何地方找到直接的答案,我正在尝试使用java类更新现有的数据库条目。用户在jsp页面上以表单形式输入其详细信息,然后调用servlet并将这些值分配给用户对象。然后将该对象传递给编辑配置文件方法以执行数据库操作。
当我尝试合并它时,它创建一个新条目的对象,当我创建更新查询并传递它没有更新时。有人可以给我一个如何使用java进行更新的例子。
Java:
public static void editUserProfile(User editUser) {
try{
factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
EntityManager em = factory.createEntityManager();
System.out.println("In edit profile Method");
int ID = editUser.get_Id();
String name = editUser.getName();
String address1 = editUser.getAddress1();
String address2 = editUser.getAddress2();
String county = editUser.getCounty();
String phone = editUser.getTelephone();
String email = editUser.getEmail();
String website = editUser.getWebsite();
String information = editUser.getInformation();
String password = editUser.getPassword();
String searchQuery = "UPDATE User SET name='"+name+"' address1='"+address1+"' address2='"+address2+"' "
+ "county='"+county+"' phone='"+phone+"' email='"+email+"' website='"+website+"' "
+ "information='"+information+"' password='"+password+"' WHERE id='"+ID+"'";
// Update user in the database
em.getTransaction().begin();
//Query r = em.createNativeQuery(searchQuery);
em.merge(searchQuery);
em.getTransaction().commit();
em.close();
答案 0 :(得分:1)
您似乎将JPA与直接JDBC混淆。
这里有一个关于JPA的概述(参见将所有内容放在一起)
https://glassfish.java.net/javaee5/persistence/persistence-example.html
您正在使用String调用em.merge(),当您真正要更新对象然后告诉实体管理器合并更改(将它们保存到数据库中)时。
您制作的UPDATE语句与您使用JDBC的方式有关,但您是否使用了Connection / PreparedStatement?对于参数/ etc ...看起来好像你的示例代码是基于JPA的。