. В настоящее время я изучаю пример кода из приложения JavaB Web Starter приложения Boilerplates Java DB, и у меня возникают проблемы с изменением таблицы. Моя БД готова и работает там. Я попытался изменить код вместо того, чтобы попасть из таблицы, чтобы попасть из таблицы. Вот картина того, как я изменил его на код:Измените таблицы из Boilerplates. Пример кода Java DB Web Starter на bluemix.
http://i.imgur.com/MglCM6T.png
package example.jpa;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "Country")
public class TODO {
@Id //primary key
@Column(name = "country_id")
@GeneratedValue(strategy = GenerationType.AUTO)
int id;
@Basic
@Column(name = "country_name")
String name;
public String getName() {
System.out.println(name);
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
System.out.println(id);
return id;
}
public void setId(int pk) {
id = pk;
}
@Override
public String toString() {
return String.format("{\"id\": \"%d\", \"name\": \"%s\"}", id, name);
}
}
package example.jpa;
import java.util.List;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.persistence.EntityManager;
import javax.transaction.UserTransaction;
import javax.ws.rs.DELETE;
import javax.ws.rs.FormParam;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
@Path("/Country")
public class TODOListResource {
private UserTransaction utx;
private EntityManager em;
public TODOListResource() {
utx = getUserTransaction();
em = getEm();
}
@POST
public Response create(@FormParam("name") String name) {
TODO todo = new TODO();
todo.setName(name);
try {
utx.begin();
em.persist(todo);
utx.commit();
return Response.ok(todo.toString()).build();
} catch (Exception e) {
e.printStackTrace();
return Response.status(javax.ws.rs.core.Response.Status.INTERNAL_SERVER_ERROR).build();
} finally {
try {
if (utx.getStatus() == javax.transaction.Status.STATUS_ACTIVE) {
utx.rollback();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
@DELETE
public Response delete(@QueryParam("country_id") int id) {
try {
utx.begin();
TODO todo = em.find(TODO.class, id);
if (todo != null) {
em.remove(todo);
utx.commit();
return Response.ok().build();
} else {
return Response.status(javax.ws.rs.core.Response.Status.NOT_FOUND).build();
}
} catch (Exception e) {
e.printStackTrace();
return Response.status(javax.ws.rs.core.Response.Status.INTERNAL_SERVER_ERROR).build();
} finally {
try {
if (utx.getStatus() == javax.transaction.Status.STATUS_ACTIVE) {
utx.rollback();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
@PUT
public Response update(@FormParam("country_id") int id,
@FormParam("name") String name) {
try {
utx.begin();
TODO todo = em.find(TODO.class, id);
if (todo != null) {
todo.setName(name);// TODO check if null
em.merge(todo);
utx.commit();
return Response.ok().build();
} else {
return Response.status(javax.ws.rs.core.Response.Status.NOT_FOUND).build();
}
} catch (Exception e) {
e.printStackTrace();
return Response.status(javax.ws.rs.core.Response.Status.INTERNAL_SERVER_ERROR).build();
} finally {
try {
if (utx.getStatus() == javax.transaction.Status.STATUS_ACTIVE) {
utx.rollback();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response get(@QueryParam("country_id") int id) {
if (id == 0) {
List<TODO> list = em.createQuery("SELECT country_id, country_name FROM country", TODO.class).getResultList();
if (list.size() == 0) {
list = em.createQuery("SELECT country_id, country_name FROM country", TODO.class).getResultList();
}
//TODO use JSON util like Gson to render objects and use REST Response Writer
String json = "{\"id\":\"all\", \"body\":" + list.toString() + "}";
return Response.ok(json).build();
}
TODO todo = null;
try {
utx.begin();
todo = em.find(TODO.class, id);
utx.commit();
} catch (Exception e) {
e.printStackTrace();
return Response.status(javax.ws.rs.core.Response.Status.INTERNAL_SERVER_ERROR).build();
} finally {
try {
if (utx.getStatus() == javax.transaction.Status.STATUS_ACTIVE) {
utx.rollback();
}
} catch (Exception e) {
e.printStackTrace();
}
}
if (todo != null)
return Response.ok(todo.toString()).build();
else
return Response.status(javax.ws.rs.core.Response.Status.NOT_FOUND).build();
}
/*private void createSampleData() {
create("sample entry #1");
create("sample entry #2");
create("sample entry #3");
}*/
private UserTransaction getUserTransaction() {
InitialContext ic;
try {
ic = new InitialContext();
return (UserTransaction) ic.lookup("java:comp/UserTransaction");
} catch (NamingException e) {
e.printStackTrace();
}
return null;
}
private EntityManager getEm() {
InitialContext ic;
try {
ic = new InitialContext();
return (EntityManager) ic.lookup("java:comp/env/openjpa-todo/entitymanager");
} catch (NamingException e) {
e.printStackTrace();
}
return null;
}
}
Я также не мог найти, где это создает таблицу TODO, когда оно не существует в моей дб.
Спасибо
Можете ли вы рассказать о том, какие проблемы у вас есть? Я не вижу ничего плохого в ваших изменениях, поэтому сообщение об ошибке, вероятно, поможет. – opiethehokie
Это намного лучше, если вы действительно добавляете сам код, а не добавляете код в качестве изображений. Никто не собирается вводить этот код. Вам нужно облегчить людям помощь, поэтому рекомендуется создать [mcve] (http://stackoverflow.com/help/mcve) – kkuilla
Итак, я редактировал свой вопрос добавление кодов. У меня есть таблица на bluemix с именем country с двумя столбцами: country_id (int) и country_name (varchar). Я загрузил образец кода веб-стартера JavaDB, и когда я побежал, он создал таблицу todolist на моем db. Что я пытаюсь сделать с кодом, так это понять, как он взаимодействует с моим db, поэтому я хотел изменить таблицу todolist на таблицу моей страны. Я сделал эти изменения, которые я показал в двух классах, и теперь это дает мне ошибку. Я новичок в bluemix, и я пытаюсь создать приложение с java и db. Цените помощь. :) – Daiane