2
簡体例:(私が正しく取引を理解している場合)は、メソッドは@Transactional
で注釈されていない(と私は実際にそれを希望として私は、それが失敗すると予想しているでしょうが、コントローラの作品からfooService.save(myNewFoo)
を呼び出すなぜ@Transactionalなしで保存できますか?
@Entity
public class Foo {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String bar;
// getters + setters
}
public interface FooRepository extends CrudRepository<Foo, Integer> {
}
@Service
public class FooService {
private final FooRepository repository;
public FooService(FooRepository repository) {
this.repository = repository;
}
public Foo save(Foo foo) {
return repository.save(foo);
}
}
失敗する)。なぜこのような振る舞いですか?シーンを扱うトランザクションを作成するのは誰ですか?これを避ける方法は?
その他の詳細:
- のJava 9
- のMySQLコネクタ6.0.6
- 休止5.2.12
- 春ブーツ2.0.0.M7
- 春データJPA 2.0.2。リリース
デフォルトでは、CrudRepositoryとfriendsのメソッドは '@ Transactional'です。 –
@ M.Deinum '@ Transactional'にすることはできません。実装全体を自分で書き換えることは別ですか?私は、私のサービスがトランザクションを担当することを望み、そうでなければ失敗します。 – sp00m
@ M.Deinum「SimpleJpaRepository」を拡張し、何らかの形で「@ Transaction」を無効にできますか? – sp00m