我在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”,...]
因此,我试图查看列表中的所有整数是奇数,还是偶数,或者是奇数和偶数兼而有之。我已经有了一个大致的框架,但是我有没有可能同时处理一个列表中的所有整数,看看它们是奇数还是偶数?