Сделать hibernate игнорировать переменные класса, которые не отображаются

Я думал, что hibernate учитывает только переменные класса, которые аннотируются с помощью @Column. Но странно сегодня, когда я добавил переменную (которая не сопоставляется ни с каким столбцом, просто с переменной, которая мне нужна в классе), она пытается включить эту переменную в оператор select как имя столбца и выдает ошибку -

Неизвестный столбец 'team1_.agencyName' в 'списке полей'

Мой класс -

@Entity
@Table(name="team")
public class Team extends BaseObject implements Serializable {

@Id  @GeneratedValue(strategy=GenerationType.AUTO)
private Long id;

@Column(length=50)
private String name;

@Column(length=10)
private String code;

@Column(name = "agency_id")
private Long agencyId;

private String agencyName; //note: not annotated.

}

FYI... Я использую вышеуказанный класс в другом классе с отображением многих-многих

@ManyToMany(fetch = FetchType.EAGER) 
@JoinTable(
        name="user_team",
        joinColumns = { @JoinColumn( name="user_id") },
        inverseJoinColumns = @JoinColumn( name="team_id")
)    
public Set<Team> getTeams() {
    return teams;
}

Почему это происходит?!

Ответ 1

JPA будет использовать все свойства класса, если вы специально не отметите их @Transient:

@Transient
private String agencyName;

Аннотация @Column является чисто необязательной и позволяет вам переопределить имя сгенерированного автосоздания. Кроме того, атрибут length @Column используется только при определении выражений в автогенерации, он не влияет на время выполнения.

Ответ 2

Для людей, которые находят это сообщение через поисковые системы, другой возможной причиной этой проблемы является импорт неправильной версии пакета @Transient. Убедитесь, что вы импортируете javax.persistence.transient, а не какой-либо другой пакет.

Ответ 3

Размещение @Transient на геттере с частным полем для меня.

private String name;

    @Transient
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }