Java – JPA – using annotations in the model
•
Java
My application runs on JPA / Hibernate, spring and wicket I'm trying to convert our ORM from XML file to JPA annotation The annotated model is as follows:
@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;
}
}
Initially, it has no comments, and it's in user hbm. The mapping is described in 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>
When I delete the mapping file and try to use annotations only, the entitymanagerfactory is not created, but an exception occurs
This property has no mapping set because it is just a convenient method What did I do wrong?
Solution
Mark the method @ transient so hibernate ignores it:
/**
* @return Returns firstName and lastName
*/
@Transient
public String getFullName() {
return firstName + ' ' + lastName;
}
By default, everything that looks like a getter is mapped
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码
