Ich habe eine grundlegende SpringBoot App. mit Spring Initializer, eingebettet Tomcat, Thymeleaf Template-Engine, und Paket als eine ausführbare JAR-DateiSpring @Transactional schreibgeschützt
Mit dieser Abhängigkeit
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
ich diesen Dienst erstellt haben als schreibgeschützt deklariert:
@Service
@Transactional(readOnly = true)
public class TimeLapseService {
@Autowired
TimeLapseRepository timeLapseRepository;
public Set<TimeLapse> findAllByCompanyId(long companyId) {
return timeLapseRepository.findAllByCompanyId(companyId);
}
public Iterable<TimeLapse> findAll (User user) {
if (user.isAdmin()) {
return timeLapseRepository.findAll();
} else {
return timeLapseRepository.findAllByCompanyId(user.getCompany().getId());
}
}
public void createTimeLapse (TimeLapse timeLapse) {
timeLapseRepository.save (timeLapse);
}
}
und
public interface TimeLapseRepository extends CrudRepository<TimeLapse, Long> {
....
}
Soweit ich weiß, da der Service als rea erklärt wird Donly, einen neuen Dienst zu schaffen, nichts zu der DB bestehen sollte, aber es eine Zeile in der Tabelle erstellt
timeLapseService.createTimeLapse(timeLapse24h);
JPA Eigenschaften:
spring.datasource.url=jdbc:h2:mem:testdb;MODE=MySQL;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
hibernate.dialect=org.hibernate.dialect.H2Dialect
beibehalten werden würde Wie sind Sie sicher, dass Sie eine haben Neuer Datensatz, sehen Sie ihn in einer anderen Transaktion (zB von Ihrem DB-Client)? Fügen Sie auch die jpa-Konfigurationen hinzu, die Sie haben. – GabiM
Kann auf Methodenebene sein und die Transaktion auf Klassenebene überschreiben. –
warum Sie nicht versuchen, die nur lesbar für Ihre speichern Methode wie diese – Pradeep