当我试图用Springboot在数据库中保存一个实体时,出现了一种奇怪的行为。
@Autowired
private OrderRepository orderRepository;
@Autowired
private final KafkaTemplate<String, OrderDto> kafkaTemplate;
public void createOrders(String sapOrder) throws ParseException {
List<Order> ordersFromSap = KafkaUtils.extractOrdersFromText(sapOrder);
try {
for (Order orderFromSap : ordersFromSap) {
//DB
orderRepository.save(orderFromSap);
}
} catch (Exception e) {
log.info("Error:" + e.getMessage());
}
}
使用调试器,我检查了我的ordersFromSap
列表仅包含一个订单。除了设置为NULL
的id
属性之外,此订单已完全实例化。
数据库为空,位于orderRepository之后。保存(来自SAP的订单)
命令我在表格中找到了两行。
控制台在执行该行后立即打印:
Hibernate:
insert
into
orders
(dimension, end_date, po_number, quantity, sap_code, sap_code_description, start_date, status)
values
(?, ?, ?, ?, ?, ?, ?, ?)
Hibernate:
insert
into
orders
(dimension, end_date, po_number, quantity, sap_code, sap_code_description, start_date, status)
values
(?, ?, ?, ?, ?, ?, ?, ?)
所以我认为是与保存命令相关的东西,而不是像我的方法被执行两次这样的东西。
这是
订单
类:
package com.dotnext.kafka.model;
import lombok.*;
import java.lang.reflect.Field;
import java.util.*;
import javax.persistence.*;
import javax.validation.constraints.*;
@Getter
@Setter
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table( name = "orders")
public class Order {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotBlank
private String poNumber;
@NotBlank
private String dimension;
@NotBlank
private String sapCode;
@NotBlank
private String sapCodeDescription;
@NotBlank
private int quantity;
@NotBlank
private Date startDate;
@NotBlank
private Date endDate;
@Enumerated(EnumType.STRING)
@Column(length = 20)
private PoStatus status;
public List<String> getProperties() {
List<String> outList = new ArrayList<String>();
for (Field f : getClass().getDeclaredFields()) {
outList.add(f.getName());
}
return outList;
}
}
这是我的
应用程序的
jpa
部分。yml
jpa:
defer-datasource-initialization: 'true'
hibernate:
ddl-auto: create-drop
properties:
hibernate:
data: classpath:Data.sql
dialect: org.hibernate.dialect.MySQL5InnoDBDialect
format_sql: true
show-sql: true
尝试在createOrders
方法上使用事务性注释,它将在不使用的情况下保存记录。保存
方法。
我创建了一个可扩展的演示osgi,用于嵌入osgi以加载动态规则。我只能找到一个旧的日食春分3.8。maven central上的0 jar提供了一个NullPointerException,但代码在ApacheFelix上运行良好。是否有一个与sbt/ivy/maven合作的回购协议,该协议有更新的Equininox版本,以便我可以试用? 编辑:请注意上面链接中的演示是为了嵌入eclipse E
在Nexus3(OSS 3.13.0-01)中,我创建了一个组“public”,其中包含(除其他外)代理存储库maven central(https://repo1.maven.org/maven2/)还有大西洋(https://maven.atlassian.com/repository/public/).这两个存储库都包含工件com。国际商用机器公司mobilefirstplatform。cl
假设我有一个spring bean我想在整个应用程序中使用,但是因为它是遗留代码,所以我不能在或任何类型的bean中使用它,因为这个类是在整个项目中手动实例化的,所以我不能在我想要的地方自动地使用它。 我如何为一个我想要重用的spring bean创建一个包装器类,配置如下,这样它除了返回在应用程序上下文中注册的bean的实例之外什么都不做? 基本上,我正在寻找类似的方法,如: 这样,在我想使用M
我已经试着解决这件事很长一段时间了,但我什么也没得到。我一直在试图保存一个实体,该实体拥有对另一个实体的引用。 用户通过填写表单创建一个place实体,然后按save保存该实体。它应该自动在“places”和“place\u url”表中创建新行。下面是我正在加载到应用程序中的SQL文件的链接:https://pastebin.com/x8Gvk7ub 母实体: 子实体: 控制器: Hiberna
问题内容: 我在Web应用程序中使用了JPA,但我想不出如何持久化彼此相关的两个新实体。这里是一个例子: 这是两个实体 该 消费者 有一个 ID 和其他一些价值观。该 ProfilePicture 使用 消费者 的 ID ,因为它是自己的主键和外键。(由于没有使用者,ProfilePicture将不存在,并且并非每个使用者都具有ProfilePicture) 我使用NetBeans生成实体类和会话
目前,我们所有的构建都失败了,因为无法从公共SBT插件回购中解析插件。我们得到以下错误: [警告]注意:某些未解析的依赖项具有额外属性。检查这些依赖项是否与请求的属性一起存在。[警告]com。类型安全。播放:sbt插件:2.4。0(scalaVersion=2.10,sbtVersion=0.13)[警告]com。github。gseitz:sbt版本:1.0。0(标度规避=2.10,sbtVer