JLP:
私は春のJPAとSpringBootと春データ休息を使用しています。私は、DBのテーブルと呼ばれるユーザーとこのテーブルのエンティティを持っています。私は、このアプリケーションのためのコントローラを持っていません。
@Entity
@Table(name = "USER")
public class User implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "USER_ID")
private Integer userid;
@Basic(optional = false)
@Column(name = "USER_NAME")
private String username;
}
そして今、私は、ユーザーテーブルの列ではありませんもう一つのフィールドを追加する必要があります。それは目的を追跡するためのいくつかの監視ツールによって使用されます。
@Entity
@Table(name = "USER")
public class User implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "USER_ID")
private Integer userid;
@Basic(optional = false)
@Column(name = "USER_NAME")
private String username;
private String tracer; // this field is not in DB
}
このクラスは、エンティティとして注釈されているので、理にかなって、このフィールドを、追加した後、無効な列名「トレーサー」 - 私はjdbc.spi.SqlExceptionHelperを取得しています。エンティティクラスに非DBフィールドを追加する方法があります:私の質問は、ということでしょうか?私はないと思い、誰かが解決策を持っている場合に知っていただきたいと思います。ありがとうございました。
ファビアーノ・オリベイラ:
はい、ちょうど注釈を追加し@Transient
、あなたのフィールドに。
あなたはAPIドキュメントから詳細を読むことができます:
https://docs.jboss.org/hibernate/jpa/2.1/api/javax/persistence/Transient.html
そして、ここで(セクション37.1.2.1):
https://docs.oracle.com/javaee/7/tutorial/persistence-intro001.htm#BNBQA
それが役に立てば幸い。