对于CREATE操作,这是存储在数据库中的内容:-
[id=1, name=Ram, city=Delhi, email=abc@gmail.com, phone=12345]
但是,当我执行更新操作时,未更新的字段将变为null
[id=1, name=null, city=Mumbai, email=null, phone=56789]
现在,我的问题是如何防止名称和电子邮件变为空??
@Entity
public class User {
@Id
private Integer id;
private String name;
private String city;
private String email;
private String phone;
//Setters and Getters
}
import org.springframework.data.repository.CrudRepository;
import com.therealdanvega.domain.User;
public interface UserRepository extends CrudRepository<User, Integer>{
}
@SpringBootApplication
public class JsontodbApplication implements CommandLineRunner {
@Autowired
private UserRepository userRepo;
public static void main(String[] args) {
SpringApplication.run(JsontodbApplication.class, args);
}
@Override
public void run(String... args) throws Exception {
/* CREATE USER */
userRepo.save(createUser());
/* UPDATE USER */
userRepo.save(updateUser());
System.out.println(userRepo.findOne(1));
}
public User createUser() {
User user = new User();
user.setId(1);
user.setName("Ram");
user.setCity("Delhi");
user.setEmail("abc@gmail.com");
user.setPhone("12345");
return user;
}
public User updateUser() {
User user = new User();
user.setId(1);
user.setCity("Mumbai");
user.setPhone("56789");
return user;
}
}
您的代码并不像您认为的那样工作。对于Spring来说,实际上是这样的:
Spring存储库是这样工作的,如果您保存的对象具有NULL id,它将添加它。如果用给定的id保存对象,它将更新所有已更改的值。因此,对于spring,您实际上更新了每个字段,一些字段为新值,大多数字段为空值。更多信息
@SpringBootApplication
public class JsontodbApplication implements CommandLineRunner {
@Autowired
private UserRepository userRepo;
public static void main(String[] args) {
SpringApplication.run(JsontodbApplication.class, args);
}
@Override
public void run(String... args) throws Exception {
/* CREATE USER */
User user = userRepo.save(createUser(new User()));
/* UPDATE USER */
userRepo.save(updateUser(user));
System.out.println(userRepo.findOne(1));
}
public User createUser(User user) {
user.setName("Ram");
user.setCity("Delhi");
user.setEmail("abc@gmail.com");
user.setPhone("12345");
return user;
}
public User updateUser(User user) {
user.setCity("Mumbai");
user.setPhone("56789");
return user;
}
}
我有一个数据已经保存在我的数据库基于我的存储库和服务。我想保存另一个数据与邮递员只改变播放器id。但它不是创建一个新的实体数据。它更新现有的实体数据。我的问题是如何更新一个数据由我的服务当它找到一个现有的id。但当它找到一个新的id将保存一个新的数据到数据库。 这是我的回购: 这是我的服务:
无论如何,如果用户名已经被使用,存储库只需进行更新,因为指定的标识符不是空的。这不是我想要的行为,我需要它抛出类似重复条目异常的东西。有什么办法可以预防吗?我必须自己做吗?例如:
问题内容: 嗨,专家,我如何在SQL Server中锁定行,以防止CRUD操作(甚至是SELECT)。是否有可能?可序列化的隔离级别不会阻止SELECT。谢谢 问题答案: 这样就可以了。 编辑 正如其他人所指出的,您不能将行锁定为不被读取 。我知道这样做的唯一方法如下: 并假设在SELECT语句中从未使用过WITH(NOLOCK)(无论如何应避免使用)。 我测试了这一点,并且可以正常工作,尽管TA
问题内容: 假设您已经在使用m2eclipse插件,当它没有将依赖关系更新到您的仓库中的最新版本时,您该怎么办? 例如,在命令行上,您只需添加如下标记即可 …强制更新依赖项。Eclipse中是否有类似的东西?(似乎并不总是能够获得最新更新。) 问题答案: 您可以 右键单击 项目,然后 右键单击 Maven >更新项目…,然后选择 强制更新快照/发布 复选框,然后单击确定。
我正在尝试将输入验证添加到一组三个 ,用户在其中输入数值。我面临的问题是,为了使计算正常工作,用户无法输入零作为输入字段之一,否则应用程序将崩溃。 我尝试实现以下操作以防止输入零并显示警告消息。我收到一条错误消息,指出“无法启动活动calcResult”,这是显示计算的活动。 这是错误日志的链接:http://pastebin.com/hDsabjR6 我从这里了解到,零值仍然在通过验证,但我不知
当我们在spring mvc中使用crud存储库时,会出现以下错误