[英]JPA - using annotations in a model
我的應用程序運行在JPA / Hibernate,Spring和Wicket上。 我正在嘗試將我們的ORM從XML文件轉換為JPA注釋。 帶注釋的模型如下所示:
@Entity
@Table(name = "APP_USER")
public class User extends BaseObject {
private Long id;
private String firstName;
private String lastName;
private String email;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "ID")
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Column(name="FIRST_NAME")
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
@Column(name="LAST_NAME")
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
@Column(name="EMAIL")
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
/**
* @return Returns firstName and lastName
*/
public String getFullName() {
return firstName + ' ' + lastName;
}
}
最初,它沒有注釋,並且在User.hbm.xml中描述了映射:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="org.appfuse.model.User" table="app_user">
<id name="id" column="id" unsaved-value="null">
<generator class="increment"/>
</id>
<property name="firstName" column="first_name" not-null="true"/>
<property name="lastName" column="last_name" not-null="true"/>
<property name="email" column="email"/>
</class>
</hibernate-mapping>
當我刪除映射文件並嘗試僅使用注釋時,不會創建entityManagerFactory,但會出現異常
org.hibernate.PropertyNotFoundException: Could not find a setter for property fullName in class org.appfuse.model.User.
此屬性沒有映射集,因為它只是一種方便的方法。 我做錯了什么?
將方法標記為@Transient
以便Hibernate忽略它:
/**
* @return Returns firstName and lastName
*/
@Transient
public String getFullName() {
return firstName + ' ' + lastName;
}
默認情況下,映射了看起來像getter的所有內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.