I’m trying to get my models to use my MySQL database. Currently they’re not. They were created in Netbeans using the option that allows me to create a model from a database table. I’m not sure how to get this to use my MySQL tables in runtime though. Any suggestions?
My Model
@Entity
@Table(name = "content")
@NamedQueries({
@NamedQuery(name = "Content.findAll", query = "SELECT c FROM Content c"),
@NamedQuery(name = "Content.findById", query = "SELECT c FROM Content c WHERE c.id = :id"),
@NamedQuery(name = "Content.findByUserId", query = "SELECT c FROM Content c WHERE c.userId = :userId")})
public class Content implements java.io.Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@NotNull
@Column(name = "id")
private Integer id;
@Basic(optional = false)
@NotNull
@Column(name = "user_id")
private int userId;
@Basic(optional = false)
@NotNull
@Lob
@Size(min = 1, max = 65535)
@Column(name = "body")
private String body;
public Content() {
}
public Content(Integer id) {
this.id = id;
}
public Content(Integer id, int userId, String body) {
this.id = id;
this.userId = userId;
this.body = body;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getBody() {
return body;
}
public void setBody(String body) {
this.body = body;
}
@Override
public int hashCode() {
int hash = 0;
hash += (id != null ? id.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Content)) {
return false;
}
Content other = (Content) object;
if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
return false;
}
return true;
}
@Override
public String toString() {
return "model.Content[ id=" + id + " ]";
}
}
I expect this code to list all of the content in my database but it lists nothing. My assumption is that it’s using some other database, but I”m not entirely sure how to test it.
<ol> <%
List<Content> contentList = (List<Content>)request.getAttribute("content");
if (contentList != null) {
for (Content content : contentList) { %>
<li> <%= content %> </li> <%
}
} %>
</ol>
doesn’t netbeans create a persistence unit for you when you do that?
if netbeans didn’t do it you have to create it yourself, create a persistence.xml and put it in META-INF folder. inside persistence.xml you define a persistence unit, which in essence is a named database connection or pool of connections. then in your javacode you use EntityManagerFactory to create an EntityManager for the named persistence unit.
you also have to specify the JPA-provider in persistence.xml, I’d recommend EclipseLink or Hibernate.
finally you have to set up dependencies in your project for the JPA provider you choose.