当方、java歴一ヶ月未満の初心者です。
自分用の備忘録として残します。
やりたかった事
tableからfindしてきたmodelのクラスに
カラムに存在しないフィールド名のパラメータを持たせたかった。
phpでは(あまりおすすめできないけど)そのまま変数宣言すれば普通に使えたので
javaでもできると思った。
だめだった例
Hogeテーブルにnameカラムは無く
外部からとってきたり、動的にhogeで処理させたいような時
@Entity
public class hoge {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String name;
こうしたら
Caused by: java.sql.SQLException: Column 'name' not found.
怒られた。
PHPみたいに、nullで入ってたりはくれず
見るデータがないからダメらしい
解決法
@Transient
アノテーションを使って、マッピング対象外にする。
本来は永続化対象外にする為のアノテーションらしいが
その影響でマッピング対象外になるらしい(違かったらすいません)
@Entity
public class hoge {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Transient
private String name;
怒られなくなりました
javaを勉強していると
いかに自分がPHPで適当なコーディングしていたかがよく分かります。