Java Hibernate 5迁移和实体合并
我正在尝试使用SpringBoot1.4.3和Spring4.3.4从Hibernate4.3.10升级到Hibernate5.0.12。我能够解决命名问题(至少我希望如此),但现在我被困在“合并”中,合并由于某些原因无法工作。我有一段代码:Java Hibernate 5迁移和实体合并,java,spring,hibernate,jpa,merge,Java,Spring,Hibernate,Jpa,Merge,我正在尝试使用SpringBoot1.4.3和Spring4.3.4从Hibernate4.3.10升级到Hibernate5.0.12。我能够解决命名问题(至少我希望如此),但现在我被困在“合并”中,合并由于某些原因无法工作。我有一段代码: DeviceEntity entity = entityManager.find(DeviceEntity.class, device.getId()); GroupEntity groupEntity = entityManager.find(Group
DeviceEntity entity = entityManager.find(DeviceEntity.class, device.getId());
GroupEntity groupEntity = entityManager.find(GroupEntity.class, group.getId());
entity.getGroups().add(groupEntity);
groupEntity.getDevices().add(entity);
entityManager.merge(groupEntity);
groupEntity
find()之后不包含任何设备,然后我将设备添加到组中。调用merge后,不会保存任何内容。这在4.3.4中起作用。GroupEntity.devices的映射如下所示:
@ManyToMany(mappedBy="groups")
private Set<DeviceEntity> devices = new HashSet<>();
@ManyToMany
@JoinTable(name="T_DEVICE_GROUPS", joinColumns = {
@JoinColumn(name="DEVICE_ID", referencedColumnName="id")},
inverseJoinColumns = {@JoinColumn(name="GROUP_ID", referencedColumnName="id")}
)
private Set<GroupEntity> groups = new HashSet<GroupEntity>();
persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
<persistence-unit name="manager1" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
....classes....
<validation-mode>AUTO</validation-mode>
</persistence-unit>
</persistence>
org.hibernate.jpa.HibernatePersistenceProvider
……课程。。。。
自动的
代码运行的服务被标记为
@Transactional(rollboor=someException.java)
您是否正确应用了事务?您是否在两侧都尝试了@manytomy(cascade=CascadeType.MERGE)
?我更新了问题。这里有@Transactional。在其他方法中为该设备实体创建操作有效。您正在使用Spring引导。。。那么为什么要使用xml呢?@Babl我已经尝试过(甚至认为它可以与较旧的hibernate一起使用),但没有成功。
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
<persistence-unit name="manager1" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
....classes....
<validation-mode>AUTO</validation-mode>
</persistence-unit>
</persistence>