Родительская сущность:
@Entity
@Table(name = "COCERTIFICATES")
public class COCertificatesEntity implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "cocertgen")
@SequenceGenerator(name = "cocertgen", sequenceName = "SEQ_COMMON")
@Column(name = "CERT_ID", nullable = false, insertable = true, updatable = true, precision = 0)
private Integer IdCOCertificate;
@OneToMany(mappedBy = "certificate", fetch = FetchType.LAZY, cascade = { CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE })
private List<COCertificateOperationsEntity> operations;
// ...
}
@Entity
@Table(name = "COCERTIFICATE_OPERATIONS")
public class COCertificateOperationsEntity {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "cocertoperationgen")
@SequenceGenerator(name = "cocertoperationgen", sequenceName = "SEQ_COCERT_OPERATION")
@Column(name = "TRANSACTION_ID", nullable = false, insertable = true, updatable = true, precision = 0)
private Long transactionId;
@ManyToOne(fetch = FetchType.EAGER, cascade = { CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE })
@JoinColumn(name = "CERT_ID")
private COCertificatesEntity certificate;
// ....
}
Наполнение сущностей:
// ...
COCertificatesEntity certificateEntity = new COCertificatesEntity();
// ...
if (!currencyOperations.isEmpty()) {
for (CurrencyOperationRequest operation : currencyOperations) {
COCertificateOperationsEntity operationEntity = operationToEntity(operation);
operationEntity.setCertificate(certificateEntity);
certificateEntity.addOperation(operationEntity);
}
}
// ...
здесь не обязательно ребенку задавать ссылку на родителя, но т.к. не работает, попробовал.
DAO-интерфейс:
public interface COCertificateDAO {
@Transactional(Transactional.TxType.REQUIRED)
void save(COCertificatesEntity entity);
}
Кусочек настройки SessionFactory:
<!-- ... -->
<tx:annotation-driven transaction-manager="transactionManager" />
<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<!-- ... -->
</bean>
<!-- ... -->
а так же application.yml, без которого, к слову, связка с хибернейтом не заводилась совершенно никак. Привет, spring-boot:
spring:
datasource:
continueOnError: true
initialize: false
initialSize: 0
timeBetweenEvictionRunsMillis: 5000
minEvictableIdleTimeMillis: 5000
minIdle: 0
driverClassName: oracle.jdbc.OracleDriver
jpa:
show-sql: true
hibernate:
ddl-auto: none
naming_strategy: org.hibernate.cfg.DefaultNamingStrategy
properties:
hibernate:
dialect: org.hibernate.dialect.Oracle10gDialect
hbm2ddl:
auto: none
temp:
use_jdbc_metadata_defaults: false