Salut
j'utilise spring boot, spring-data jpa et mysql
Dans une application de gestion de gym, pour le memberId la valeur utilisait un autoincrement de mysql
Gym A crée un membre, memberId = 1
Gym B crée un membre, memberId = 2
Gym A crée un membre, memberId = 3
Il voudrait avoir un générateur pour chaque gym.
J'ai créer un nouveau champs memberNumber pour membre.
Gym A crée un membre, memberId = 1, memberNumber=1
Gym B crée un membre, memberId = 2, memberNumber=1
Gym A crée un membre, memberId = 3, memberNumber=2
au niveau de la bd
Dans la table gym j'aurais un champ currentGeneratorValue
ConfigGenerator
gym currentGeneratorValue
1 2
2 2
3 18
Je cherche une façon de lire currentGeneratorValue, sauvegarder le membre, mettre la nouvelle valeur dans currentGeneratorValue.
Dans mon service
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public class Member{ @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private Long memberId; private Long memberNumber; }
Je pensais utiliser des sychronized et faire une transaction manuellement?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 @Service public class MemberServiceImpl implements MemberService{ private final MemberRepository memberRepository; public MemberServiceImpl(final MemberRepository memberRepository){ this.memberRepository =memberRepository; } public Long memberSave(MemberDto memberDto) throws ResourceNotFoundException{ Member member=null; if(memberDto==null){ throw new ResourceNotFoundException("Member null"); } if(memberDto.getMemberId()!=null){ member=memberRepository.findOne(memberDto.getMemberId()); } convertToBean(memberDto, member); if(member==null){ member = new Member(); //get current value //set value for memberNumber field memberRepository.save(member); //update value }else{ } memberRepository.save(member); } public synchronized Long getCurrentValue(){ ... } public synchronized Long setCurrentValue(){ ... } }
des meilleurs façon?
Partager