Я реализую JPA в своем приложении. Это приложение уже использует Spring, Hibernate SessionFactories (3), сервер Wild Fly с XA Datasource и JTA Transaction Manager.Объект не сохраняется
Чтобы проверить JPA, я устанавливаю его на простой объект, который не связан с каким-либо другим объектом.
Выбор и запрос HQL в порядке, но не сохранение. Моя проблема в том, когда я создаю или обновляю этот объект, а создание и модификация не эффективны, и нет ошибки.
Интересно, не проблема на стороне TransactionManager. я не имеют persistence.xml файл
Услуга:
@Service
@Transactional(value = "transactionManager")
public class UtilisateurServiceImpl implements UtilisateurService {
@Autowired
private UtilisateurDao utilisateurDAO;
public UtilisateurServiceImpl() {
}
...
public void creerUser() {
utilisateurDAO.creerUser();
}
}
дао:
@Repository
public class UtilisateurDaoImpl implements UtilisateurDao {
@PersistenceContext(unitName="habilitationPersistenceUnit") private EntityManager entityManager;
public UtilisateurDaoImpl() {
}
...
public void creerUser() {
UtilisateurEntity utilisateur2 = new UtilisateurEntity();
utilisateur2.setDateCreation(new Date());
utilisateur2.setFax("");
utilisateur2.setIdentifiant("Olivier");
utilisateur2.setPassword("password");
utilisateur2.setMail("");
utilisateur2.setNom("Potonnier");
utilisateur2.setNomAffichage("Olivier Potonnier");
utilisateur2.setPrenom("Olivier");
utilisateur2.setTelephone("");
utilisateur2.setDateMAJ(new Date());
//utilisateur2.setPk(40);
try {
entityManager.persist(utilisateur2);
entityManager.flush();
} catch(Exception e) {
e.printStackTrace();
}
// try {
// UtilisateurEntity entity = entityManager.find(UtilisateurEntity.class, 1);
// entity.setPassword("password");
// entityManager.merge(entity);
// } catch(Exception e) {
// e.printStackTrace();
// }
}
Entity:
@Entity @Table(name="UTILISATEUR")
public class UtilisateurEntity implements Serializable {
private static final long serialVersionUID = -3416450676331189345L;
@Id @GenericGenerator(name="entityIdGenerator", strategy="com.prima.solutions.primaclaims.core.dao.impl.PkGenerator",
parameters={@Parameter(name=PkGenerator.TABLE, value="SEQUENCE"),
@Parameter(name=PkGenerator.PK_COLUMN_NAME, value="ENTITE"),
@Parameter(name=PkGenerator.PK_COLUMN_VALUE, value="UTILISATEUR"),
@Parameter(name=PkGenerator.VALUE_COLUMN_NAME, value="NUMERO")
})
@GeneratedValue(generator="entityIdGenerator")
private Integer pk;
@Column(name="NOM") private String nom;
@Column(name="PRENOM") private String prenom;
@Column(name="IDENTIFIANT") private String identifiant;
@Column(name="PASSWORD") private String password;
@Column(name="NOM_AFFICHAGE") private String nomAffichage;
@Column(name="TELEPHONE") private String telephone;
@Column(name="FAX") private String fax;
@Column(name="MAIL") private String mail;
@Column(name="DATE_CREATION") private Date dateCreation;
@Column(name="DATE_MISE_A_JOUR") private Date dateMAJ;
public Integer getPk() {
return pk;
}
public void setPk(Integer pk) {
this.pk = pk;
}
....
}
Datasource конфиг
<!-- Data sources des differents schema -->
<bean id="dataSourceReferentiel" class="org.springframework.jndi.JndiObjectFactoryBean" scope="singleton">
<property name="jndiName" value="java:/DS_Referentiel" />
<property name="resourceRef" value="true" />
</bean>
<bean id="dataSourceHabilitation" class="org.springframework.jndi.JndiObjectFactoryBean" scope="singleton">
<property name="jndiName" value="java:/DS_Habilitation" />
<property name="resourceRef" value="true" />
</bean>
<bean id="dataSourceSinistre" class="org.springframework.jndi.JndiObjectFactoryBean" scope="singleton">
<property name="jndiName" value="java:/DS_Sinistre" />
<property name="resourceRef" value="true" />
</bean>
<!-- Transaction manager -->
<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager" />
Entity менеджеры конфигурации
<bean id="referentielEntityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="referentielPersistenceUnit" />
<property name="dataSource" ref="dataSourceReferentiel" />
<property name="packagesToScan" value="com...entity.referentiel" />
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<!-- Privilégier les logs debug de org.hibernate.SQL -->
<property name="showSql" value="false" />
<property name="databasePlatform" value="org.hibernate.dialect.SQLServerDialect" />
</bean>
</property>
</bean>
<bean id="habilitationEntityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="habilitationPersistenceUnit" />
<property name="dataSource" ref="dataSourceHabilitation" />
<property name="packagesToScan" value="com...entity.habilitation" />
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<!-- Privilégier les logs debug de org.hibernate.SQL -->
<property name="showSql" value="false" />
<property name="databasePlatform" value="org.hibernate.dialect.SQLServerDialect" />
</bean>
</property>
</bean>
<bean id="sinistreEntityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="sinistrePersistenceUnit" />
<property name="dataSource" ref="dataSourceSinistre" />
<property name="packagesToScan" value="com...entity.sinistre" />
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<!-- Privilégier les logs debug de org.hibernate.SQL -->
<property name="showSql" value="false" />
<property name="databasePlatform" value="org.hibernate.dialect.SQLServerDialect" />
</bean>
</property>
</bean>
Не могли бы вы разместить конфигурацию спящего режима? –
Опубликовать также свою конфигурацию пружины –
Я обновил начальную запись и установил свой конфиг. Есть особенность, у меня нет файла persistence.xml может быть pb здесь – Anthony