我在MYSQL的Spring Boot应用程序中使用Spring数据JPA。在那里,我保存了一个字段上具有唯一约束的实体列表。在实体列表中,有一个实体将由于唯一约束而抛出DataWellityViolationExcure。我注意到在这种情况下,没有一个实体被持久化,即使是那些不违反唯一约束的实体。在这种情况下,什么是理想的方法,让那些不违反唯一约束的实体被持久化?当然,我可以迭代列表并一个接一个地保存它们。事实上,这就是SimpleJpaRepository在下面所做的。
@Transactional
public <S extends T> List<S> save(Iterable<S> entities) {
List<S> result = new ArrayList<S>();
if (entities == null) {
return result;
}
for (S entity : entities) {
result.add(save(entity));
}
return result;
}
我的代码-实体:
@Entity
@Table(uniqueConstraints = @UniqueConstraint(columnNames = { "name" }, name = "uq_name"))
public class SampleContent {
@Id
@GeneratedValue
private Long id;
private String name;
//getter setters
}
存储库:
public interface SampleContentRepository extends JpaRepository<SampleContent, Serializable>{
}
JUnit测试:
@Test
public void testCreate(){
List<SampleContent> sampleContentList = new ArrayList<>();
SampleContent sampleContent1 = new SampleContent();
sampleContent1.setName("dd");
SampleContent sampleContent2 = new SampleContent();
sampleContent2.setName("Roy");
SampleContent sampleContent3 = new SampleContent();
sampleContent3.setName("xx");
sampleContentList.add(sampleContent1);
sampleContentList.add(sampleContent2);
sampleContentList.add(sampleContent3);
try{
this.sampleContentRepository.save(sampleContentList);
}catch(DataIntegrityViolationException e){
System.err.println("constraint violation!");
}
}
表中已存在名为“Roy”的实体。因此,整个事务失败,@Transactional回滚。
我认为你可以采取以下步骤:
name
Set::addAll
you antities(或者一个接一个地添加它们)设置
为DB也许它是次优的,因为它迫使您进行选择*查询。但是我认为它比一个接一个地将实体保存到数据库中更有效。
根据本文,您可以使用名称作为业务密钥,这有很多好处。
我有一个spring-boot-starter-data-cassandra版本为2.1.2.release的Spring Boot应用程序。需要理解spring data Cassandra在执行insert选项时如何在实体中内部处理null。使用方法持久化这些实体。在某些情况下,这些实体的少数字段可能为空。这种方法是否会影响Cassandra的性能或墓碑可能在Cassandra中创建。或者请建
我已经尝试将JSON响应添加到Realm数据库中。我通过GSON处理响应,然后尝试转换为realm。我已经为我的响应模型类扩展了RealmObject。我还使用RealmString类通过RealmList处理列表。但当我尝试将GSON应用到领域对象时,我会出错。我正在寻找一个这样的例子,如果有人有一个。感谢所有支持。下面是我的JSON回复。
问题内容: 我的对象是: 函数的类别是: 当我尝试使用此功能时: 它不和我一起工作,有帮助吗?!!! 问题答案: 我用这个类来解决这个问题: 然后我用这个功能来使用它
我有以下API调用 失败是因为 现在我明白了,我必须多次调用以删除Cloud watch的Insight规则,每20个块。 所以从概念上来说,我在寻找 现在,我在java 8 streams api中找不到任何允许我将列表分块处理的东西。有点像scala分组功能将列表拆分为多个元素数目固定的列表。 有人能帮我解决这个问题吗?谢谢当然,我可以使用命令式样式和子列表,但如果可以的话,我宁愿避免这样做。
我尝试通过像这样更改if语句来只获得最长的回文。 这并不像预期的那样有效。我只打印第一个回文[“w”],然后在列表中返回整个字符串[“w”,“h”,...]
有时我使用filter,如您所见,有时如果需要,我使用distinct/sort。但是我仍然有很多运行时错误。 我会很乐意提供一些如何处理它的技巧。 @cricket_007 我的代码: 所以基本上,当我试图用嵌套循环解决这个任务时,我得到了O(n^2)的算法复杂度。如何解决?