Seam / Glassfish /JPAコンテナで次の操作を実行した後:
@ApplicationScoped
public class JpaGlossaryDataAccessObject implements IGlossaryDataAccessObject {
// ...
@Transactional
public void deleteColumn(String glossaryName, String columnName) {
final GlossaryColumn column = getColumn(glossaryName, columnName);
entityManager.remove(column);
}
// ...
}
要求された列はDBから正常に削除されます。これは、SQLワークベンチを使用して確認できます。ただし、後で次のメソッドを呼び出す場合:
@ApplicationScoped
public class JpaGlossaryDataAccessObject implements IGlossaryDataAccessObject {
// ...
@Transactional
public List<Glossary> getGlossaries(Collection<String> glossaryNames) {
glossaryNames.retainAll(getGlossaryNames());
return entityManager.createQuery(SELECT_ALL_NAMED_GLOSSARIES, Glossary.class).setParameter(GLOSSARY_NAMES_PARAMETER_INDEX, glossaryNames).getResultList();
}
// ...
}
これは基本的に前述の列を含む用語集を返しますが、削除された列はまだ用語集オブジェクトにあります。それらはデータベースにもう存在していませんが。どうすればいいの?これを機能させるために実行する必要のある追加の更新はありますか?
ちなみに、私のbeans.xmlは次のようになります。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:s="urn:java:ee"
xmlns:security="urn:java:org.jboss.seam.security" xmlns:permission="urn:java:org.jboss.seam.security.permission"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://jboss.org/schema/cdi/beans_1_0.xsd">
<alternatives />
<decorators />
<interceptors>
<class>org.jboss.seam.security.SecurityInterceptor</class>
<class>org.jboss.seam.transaction.TransactionInterceptor</class>
</interceptors>
<security:IdentityImpl>
<s:modifies />
<security:authenticatorClass>ch.diction.webportal.security.seam.authentication.ChallengeResponseIdmAuthenticatorDecorator
</security:authenticatorClass>
</security:IdentityImpl>
</beans>
だから、私は何が欠けていますか?
よろしくお願いしますPascal