Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

@Transient not working in hibernate

I am using hibernate 4.1.9. My code is

@Transient
private String ldapIdTemp;

package is

import javax.persistence.Transient;

Still in hibernate query, it is not working and putting the attribute in the query.

part of query snippet (assetasset0_.ldapIdTemp as ldapIdTemp16_0_, )

I am not sure what I am doing wrong.

like image 617
romil gaurav Avatar asked Oct 07 '15 13:10

romil gaurav


2 Answers

Can you try creating setter and getter for the field and annotate the get method with @Transient, as follows:

private String ldapIdTemp;

 @Transient
 public String getLdapIdTemp() {
    return ldapIdTemp;
 }

 public void setLdapIdTemp(String ldapIdTemp) {
    this.ldapIdTemp = ldapIdTemp;
 }
like image 91
Arpit Aggarwal Avatar answered Sep 17 '22 18:09

Arpit Aggarwal


Much depends on how you "integrated" this field in your Entity or class hierarchy. Moreover, field vs. property-access could cause an issue for your setting. See this post for a detailed explanation.

In your case, I could imagine that you either:

  1. mixed field and property-access in your entity inheritance strategy
  2. use XML-based configuration for Hibernate in your application.

In both cases the JPA 2.0/2.1 specification clearly states in Section 2.3.1:

It is an error if a default access type cannot be determined and an access type is not explicitly specified by means of annotations or the XML descriptor. The behavior of applications that mix the placement of annotations on fields and properties within an entity hierarchy without explicitly specifying the Access annotation is undefined.

Please check that your persistent Entity classes have either field OR property-based annotations.

like image 45
MWiesner Avatar answered Sep 20 '22 18:09

MWiesner