@Transactional in spring working for read only but not write
Previously, I used to explicitly begin and commit the transactions but now I am trying to make use of @Transactional
annotation in spring. For some reason, all the read-only operations are working but persist()
and merge()
operations fail to work and I don't see anything on the logs. While debugging i also see that the spring has created the proxy but not sure where i am going wrong. Here is my code and spring application context configuration.
1.Jpa-context.xml
<context:annotation-config />
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="PersistenceUnit" />
</bean>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<tx:annotation-driven proxy-target-class="true" transaction-manager="transactionManager" />
2.Framework-context.xml
<context:component-scan base-package="com.github.djuloori.whiteboard.framework" />
<context:annotation-config/>
<tx:annotation-driven proxy-target-class="true" transaction-manager="transactionManager" />
<bean id = "m_SecurableEntityManager" class = "com.github.djuloori.whiteboard.framework.SecurableEntityManagerImpl"/>
3.SecurableEntityManagerImpl.Java
@Service
@Transactional
public class SecurableEntityManagerImpl implements SecurableEntityManager {
@Autowired
private EntityManagerFactory entityManagerFactory;
public void save(Object var1) {
getEntityManager().persist(var1);
}
public <T> TypedQuery<T> createQuery(String var1, Class<T> var2) {
return getEntityManager().createNamedQuery(var1,var2);
}
public <T> T update(T var1) {
return getEntityManager().merge(var1);
}
private EntityManager getEntityManager(){
return entityManagerFactory.createEntityManager();
}
}
I was also reading other questions related to @transactional
but haven't found a proper answer. I am new to spring, It would be great if anyone can help me.
spring spring-orm
add a comment |
Previously, I used to explicitly begin and commit the transactions but now I am trying to make use of @Transactional
annotation in spring. For some reason, all the read-only operations are working but persist()
and merge()
operations fail to work and I don't see anything on the logs. While debugging i also see that the spring has created the proxy but not sure where i am going wrong. Here is my code and spring application context configuration.
1.Jpa-context.xml
<context:annotation-config />
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="PersistenceUnit" />
</bean>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<tx:annotation-driven proxy-target-class="true" transaction-manager="transactionManager" />
2.Framework-context.xml
<context:component-scan base-package="com.github.djuloori.whiteboard.framework" />
<context:annotation-config/>
<tx:annotation-driven proxy-target-class="true" transaction-manager="transactionManager" />
<bean id = "m_SecurableEntityManager" class = "com.github.djuloori.whiteboard.framework.SecurableEntityManagerImpl"/>
3.SecurableEntityManagerImpl.Java
@Service
@Transactional
public class SecurableEntityManagerImpl implements SecurableEntityManager {
@Autowired
private EntityManagerFactory entityManagerFactory;
public void save(Object var1) {
getEntityManager().persist(var1);
}
public <T> TypedQuery<T> createQuery(String var1, Class<T> var2) {
return getEntityManager().createNamedQuery(var1,var2);
}
public <T> T update(T var1) {
return getEntityManager().merge(var1);
}
private EntityManager getEntityManager(){
return entityManagerFactory.createEntityManager();
}
}
I was also reading other questions related to @transactional
but haven't found a proper answer. I am new to spring, It would be great if anyone can help me.
spring spring-orm
add a comment |
Previously, I used to explicitly begin and commit the transactions but now I am trying to make use of @Transactional
annotation in spring. For some reason, all the read-only operations are working but persist()
and merge()
operations fail to work and I don't see anything on the logs. While debugging i also see that the spring has created the proxy but not sure where i am going wrong. Here is my code and spring application context configuration.
1.Jpa-context.xml
<context:annotation-config />
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="PersistenceUnit" />
</bean>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<tx:annotation-driven proxy-target-class="true" transaction-manager="transactionManager" />
2.Framework-context.xml
<context:component-scan base-package="com.github.djuloori.whiteboard.framework" />
<context:annotation-config/>
<tx:annotation-driven proxy-target-class="true" transaction-manager="transactionManager" />
<bean id = "m_SecurableEntityManager" class = "com.github.djuloori.whiteboard.framework.SecurableEntityManagerImpl"/>
3.SecurableEntityManagerImpl.Java
@Service
@Transactional
public class SecurableEntityManagerImpl implements SecurableEntityManager {
@Autowired
private EntityManagerFactory entityManagerFactory;
public void save(Object var1) {
getEntityManager().persist(var1);
}
public <T> TypedQuery<T> createQuery(String var1, Class<T> var2) {
return getEntityManager().createNamedQuery(var1,var2);
}
public <T> T update(T var1) {
return getEntityManager().merge(var1);
}
private EntityManager getEntityManager(){
return entityManagerFactory.createEntityManager();
}
}
I was also reading other questions related to @transactional
but haven't found a proper answer. I am new to spring, It would be great if anyone can help me.
spring spring-orm
Previously, I used to explicitly begin and commit the transactions but now I am trying to make use of @Transactional
annotation in spring. For some reason, all the read-only operations are working but persist()
and merge()
operations fail to work and I don't see anything on the logs. While debugging i also see that the spring has created the proxy but not sure where i am going wrong. Here is my code and spring application context configuration.
1.Jpa-context.xml
<context:annotation-config />
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="PersistenceUnit" />
</bean>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<tx:annotation-driven proxy-target-class="true" transaction-manager="transactionManager" />
2.Framework-context.xml
<context:component-scan base-package="com.github.djuloori.whiteboard.framework" />
<context:annotation-config/>
<tx:annotation-driven proxy-target-class="true" transaction-manager="transactionManager" />
<bean id = "m_SecurableEntityManager" class = "com.github.djuloori.whiteboard.framework.SecurableEntityManagerImpl"/>
3.SecurableEntityManagerImpl.Java
@Service
@Transactional
public class SecurableEntityManagerImpl implements SecurableEntityManager {
@Autowired
private EntityManagerFactory entityManagerFactory;
public void save(Object var1) {
getEntityManager().persist(var1);
}
public <T> TypedQuery<T> createQuery(String var1, Class<T> var2) {
return getEntityManager().createNamedQuery(var1,var2);
}
public <T> T update(T var1) {
return getEntityManager().merge(var1);
}
private EntityManager getEntityManager(){
return entityManagerFactory.createEntityManager();
}
}
I was also reading other questions related to @transactional
but haven't found a proper answer. I am new to spring, It would be great if anyone can help me.
spring spring-orm
spring spring-orm
edited Nov 22 '18 at 15:27
blackeyedcenter
657
657
asked Nov 22 '18 at 1:35
Dhruva JulooriDhruva Juloori
394
394
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
Autowiring EntityManager fixed the issue
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53422732%2ftransactional-in-spring-working-for-read-only-but-not-write%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Autowiring EntityManager fixed the issue
add a comment |
Autowiring EntityManager fixed the issue
add a comment |
Autowiring EntityManager fixed the issue
Autowiring EntityManager fixed the issue
answered Nov 22 '18 at 4:16
Dhruva JulooriDhruva Juloori
394
394
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53422732%2ftransactional-in-spring-working-for-read-only-but-not-write%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown