Q: JPA save () сохранить другой объект - PullRequest
0 голосов
/ 06 ноября 2018

Хочу узнать подробности JAP Repotitoty. Я создал класс обслуживания, классы eintity и классы репозитория, как показано ниже (написано на kotlin), и исключил метод обновления ItemService #.

И item1, и item2 были обновлены при выполнении метода save () item2Repository.

@Service
class ItemService(@Autowired private val item1Repository: Item1Repository, @Autowired private val item2Repository: Item2Repository) {

    fun update(id: Long) {

        val item1 = item1Repository.findById(1).get()
        item1.name = "updated!"

        val item2 = item2Repository.findById(1).get()
        item2.name = "updated!"

        // item1 and item2 were updated.
        item2Repository.save(item2)
    }
}


@Entity
@Table(name = "item1")
data class Item1(

        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        val id: Long = 0,

        @Column
        var name: String = ""
)    

@Entity
@Table(name = "item2")
data class Item2(

        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        val id: Long = 0,

        @Column
        var name: String = ""
)

interface Item1Repository: JpaRepository<Item1, Long>

interface Item2Repository: JpaRepository<Item2, Long>

Почему был обновлен item1? Я думаю, что и item1, и item2 управляются в контексте постоянства при выполнении методов findById. Будут ли сохранены все объекты, существующие в контексте постоянства, когда я выполню метод сохранения репозитория jpa?

1 Ответ

0 голосов
/ 06 ноября 2018

Поскольку это «управляемый» экземпляр, вам не нужно вызывать save для его сохранения - все изменения, внесенные в управляемый экземпляр, будут отражены в базе данных. Чтобы предотвратить такое поведение, вам придется отключить этот экземпляр, чтобы он действовал как POJO, застрахованный от прокси.

Сохранение используется либо для persist новых объектов, либо для merge отсоединения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...