1. ホーム

[解決済み】マッピングされていないクラス変数をハイバーネートに無視させる【重複あり

2022-04-17 09:34:02

質問

でアノテーションされたクラス変数のみが考慮されると思っていました。 @Column . しかし、奇妙なことに、今日、私が変数(それはどの列にもマッピングされていない、単に私がクラスで必要とする変数)を追加したとき、それは列名として選択文にその変数を含めようとして、エラーをスローする - 。

フィールドリスト」の不明な列「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.

}

参考までに、私は上記のクラスを多対多のマッピングを行う別のクラスで使用しています。

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

どうしてこうなるんだ!?

どうすればいいですか?

JPAでは すべて でマークしていない限り、クラスのプロパティを使用することができます。 @Transient :

@Transient
private String agencyName;

@Column アノテーションは純粋にオプションで、自動生成されたカラム名を上書きするために存在します。さらに length 属性の @Column はテーブル定義の自動生成時にのみ使用され、ランタイムには何の影響も及ぼしません。