Java Spring启动commandlinerunner未提交事务
我已经构建了一个实用程序来使用spring boot加载一些数据,该实用程序能够打开到DB的连接并提取数据,但它并没有以某种方式提交数据。下面是代码 我用以下方法运行它,但没有一种有效Java Spring启动commandlinerunner未提交事务,java,spring-boot,transactions,spring-transactions,Java,Spring Boot,Transactions,Spring Transactions,我已经构建了一个实用程序来使用spring boot加载一些数据,该实用程序能够打开到DB的连接并提取数据,但它并没有以某种方式提交数据。下面是代码 我用以下方法运行它,但没有一种有效 java -jar target/someapp-load-dt-0.0.1-SNAPSHOT.jar mvn spring-boot:run 代码 DataProcessor.java @Transactional(propagation = Propagation.REQUIRES_NEW) @Servic
java -jar target/someapp-load-dt-0.0.1-SNAPSHOT.jar
mvn spring-boot:run
代码
DataProcessor.java
@Transactional(propagation = Propagation.REQUIRES_NEW)
@Service
public class DataProcessor {
@Autowired
private SomeDao bshServicePackDAO;
@Transactional(readOnly = false)
public void process() {
bshServicePackDAO.findAll();//gets the data fine
bshServicePackDAO.save(new SomeDto(1,2,3));
}
}
SomeDao.java
@Repository
public interface SomeDao extends CrudRepository<SomeDto, Integer> {
}
我有@JoinTable和多对多映射,我必须更改关系的
owner
。提交开始工作。在过去,Two.java有@ManytoMany映射,所有者是两个,我必须将其更改为以下内容才能工作。现在一个。voiceFeatures。添加(两个);“承诺”很有效
Class One.java
@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinTable(name = "join_table", schema = "int", joinColumns = {
@JoinColumn(name = "service_pack_id", referencedColumnName = "service_pack_id", nullable = false)
}, inverseJoinColumns = {
@JoinColumn(name = "voice_feature_id", referencedColumnName = "voice_feature_id", nullable = false)
})
public Set<Two> voiceFeatures;
Class One.java
@ManyToMany(fetch=FetchType.EAGER,cascade=CascadeType.ALL)
@JoinTable(name=“join\u table”,schema=“int”,joinColumns={
@JoinColumn(name=“service\u pack\u id”,referencedColumnName=“service\u pack\u id”,nullable=false)
},反向连接列={
@JoinColumn(name=“voice\u feature\u id”,referencedColumnName=“voice\u feature\u id”,nullable=false)
})
公共设置语音特征;
在Two.java中
@ManyToMany(mappedBy = "voiceFeatures", fetch = FetchType.LAZY)
public Set<One> servicePacks;
@ManyToMany(mappedBy=“voiceFeatures”,fetch=FetchType.LAZY)
公共集服务包;
你能将logging.level.org.springframework.orm.jpa.JpaTransactionManager=DEBUG
添加到application.properties
并用o.s.orm.jpa.JpaTransactionManager
相关日志更新问题吗?我想我已经解决了这个问题,我会发布一个答案,谢谢回复。你忘记发布答案了
Class One.java
@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinTable(name = "join_table", schema = "int", joinColumns = {
@JoinColumn(name = "service_pack_id", referencedColumnName = "service_pack_id", nullable = false)
}, inverseJoinColumns = {
@JoinColumn(name = "voice_feature_id", referencedColumnName = "voice_feature_id", nullable = false)
})
public Set<Two> voiceFeatures;
@ManyToMany(mappedBy = "voiceFeatures", fetch = FetchType.LAZY)
public Set<One> servicePacks;