Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / [Spring] Запись добавляется 2 раза в БД / 2 сообщений из 2, страница 1 из 1
29.08.2012, 08:55:01
    #37934693
Жентос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Spring] Запись добавляется 2 раза в БД
Подскажите, почему запись добавляется 2 раза в БД? Я понимаю, что дело в двойном сохранении, но разве не надо сохранять отдельно родительскую таблицу и подчиненную?

Контроллер
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
@RequestMapping(value = "/addComment/{topicId}", method = RequestMethod.POST)
        public String saveComment(@PathVariable int topicId, @ModelAttribute("newComment")Comment comment, BindingResult result, Model model){
			Topic commentedTopic = topicService.findTopicByID(topicId);
			commentedTopic.addComment(comment);
			
			// TODO: Add a validator here
			if (!comment.isValid() ){
				return "//";
				
            }
			// Go to the "Show topic" page
			commentService.saveComment(comment);
			
            return "redirect:../details/" + topicService.saveTopic(commentedTopic);

        }




Репозиторий
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
@Service
@Transactional
public class CommentService {

	@Autowired
	private CommentRepository commentRepository;
	
	public int saveComment(Comment comment){
		return commentRepository.save(comment).getId();
		
	}	

}



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
@Service
@Transactional
public class TopicService {
	@Autowired
	private TopicRepository topicRepository;
	
	public int saveTopic(Topic topic){
		return topicRepository.save(topic).getId();

	}
}



Модель
Код: java
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.
@Entity
@Table(name = "T_TOPIC")
public class Topic {
	
	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	private int id;
	
	@ManyToOne
	@JoinColumn(name="USER_ID")
	private User author;
	
	@Enumerated(EnumType.STRING)	
	private Tag topicTag;
	
	private String name;
	private String text;
}

@Entity
@Table(name = "T_COMMENT")
public class Comment
{
	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
    private int id;
	
	@ManyToOne
	@JoinColumn(name="TOPIC_ID")
	private Topic topic;
    
	@ManyToOne
	@JoinColumn(name="USER_ID")
    private User author;

    private String text;
    private Date creationDate;
}
...
Рейтинг: 0 / 0
31.08.2012, 12:02:32
    #37938469
Жентос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Spring] Запись добавляется 2 раза в БД
Я зря вызывал 2 раза метод save()
У хорошо размеченной модели достаточно вызвать этот метод для сущности-хозяина
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / [Spring] Запись добавляется 2 раза в БД / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]