Java 无法发布列RESTFUL API

Java 无法发布列RESTFUL API,java,mysql,hibernate,Java,Mysql,Hibernate,我使用JavaHibernateJersery框架制作了RESTfulAPI 我必须发布我已经发布的数据,但是我缺少一个列MealTypeName。 这是我的道课: public class MealTypeDAO { public void addMealType( MealType bean) { Session session = SessionUtil.getSession(); Transaction tx = session.beginTransaction();

我使用JavaHibernateJersery框架制作了RESTfulAPI

我必须发布我已经发布的数据,但是我缺少一个列
MealTypeName
。 这是我的道课:

public class MealTypeDAO {

public void addMealType( MealType bean) {
    Session session = SessionUtil.getSession();
    Transaction tx = session.beginTransaction();
    addMealType(session, bean);
    tx.commit();
    session.close();
}

private void addMealType(Session session, MealType bean){
    MealType mealType = new MealType();
    mealType.setMealTypename(bean.getMealTypename());
    mealType.setModifiedon(bean.getModifiedon());
    mealType.setModifiedby(bean.getModifiedby());
    session.save(mealType);
}
这是我的资源类:

public class MealTypeResource {

@POST
@Path("/create")
@Consumes("application/json")
public Response addMealType(MealType meal){
    meal.setMealTypename(meal.getMealTypename());
    meal.setModifiedon(meal.getModifiedon());
    meal.setModifiedby(meal.getModifiedby());

    MealTypeDAO dao = new MealTypeDAO();
    dao.addMealType(meal);
    return Response.ok().build();
}

@GET
@Produces("application/json")
public Response getMealType() {
    MealTypeDAO dao = new MealTypeDAO();
    List mealTypes = dao.getMealType();
    String json = new Gson().toJson(mealTypes);
    return Response.ok().entity(json.toString()).build();
}
这是我的实体类:

public class MealType {


@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int MealTypeId;
@Column
private String MealTypename;
@Column
private int modifiedby;
@Column
private String modifiedon;


public int getMealTypeId() {
    return MealTypeId;
}

public void setMealTypeId(int mealTypeId) {
    MealTypeId = mealTypeId;
}

public String getMealTypename() {
    return MealTypename;
}

public void setMealTypename(String mealTypename) {
    MealTypename = mealTypename;
}

public int getModifiedby() {
    return modifiedby;
}

public void setModifiedby(int modifiedby) {
    this.modifiedby = modifiedby;
}

public String getModifiedon() {
    return modifiedon;
}

public void setModifiedon(String modifiedon) {
    this.modifiedon = modifiedon;
}
MySQL数据库:

CREATE TABLE `mealtype`(`Mealtypeid` int(11) NOT NULL AUTO_INCREMENT,`MealTypename` varchar(20) DEFAULT NULL,`modifiedby` int(11) NOT NULL,`modifiedon` datetime NOT NULL,PRIMARY KEY (`Mealtypeid`)) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
现在我以JSON格式从POSTMAN发布这些数据:

{"MealTypeId":14,"MealTypename":"adsdf","modifiedby":1,"modifiedon":"2000-01-01 00:00:00"}
我得到了这些数据:

{"MealTypeId":14,"modifiedby":1,"modifiedon":"2000-01-01 00:00:00"}

缺少
MealTypename
。为什么呢有人能帮我吗?

您使用的名称的首字母大写
MealTypename
-这是一个原因

名为
getMealTypename
的getter用于JSON属性
mealTypename
(不是
mealTypename
):

您需要指定JSON属性名称:

@JsonProperty(“MealTypename”)
-用于Jackson

@SerializedName(“MealTypename”)
-用于Gson

您需要将此注释放入映射到JSON的类的字段或getter(
MealType

并使用标准Java命名约定

public class MealType {

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int mealTypeId;

@Column
private String mealTypename;

}
这看起来很奇怪:

meal.setMealTypename(meal.getMealTypename());
meal.setModifiedon(meal.getModifiedon());
meal.setModifiedby(meal.getModifiedby());

您使用的名称首字母大写
MealTypename
——这是一个原因

名为
getMealTypename
的getter用于JSON属性
mealTypename
(不是
mealTypename
):

您需要指定JSON属性名称:

@JsonProperty(“MealTypename”)
-用于Jackson

@SerializedName(“MealTypename”)
-用于Gson

您需要将此注释放入映射到JSON的类的字段或getter(
MealType

并使用标准Java命名约定

public class MealType {

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int mealTypeId;

@Column
private String mealTypename;

}
这看起来很奇怪:

meal.setMealTypename(meal.getMealTypename());
meal.setModifiedon(meal.getModifiedon());
meal.setModifiedby(meal.getModifiedby());

私有字符串mealTypename@列进行了更改,但仍然不起作用。@mree您需要将
@JsonProperty(“MealTypename”)
放入getter。如果要在数据库中使用
MealTypename
,可能需要指定
@Column
名称。我需要将此@JsonProperty(“MealTypename”)放在哪里??在实体类??私有字符串mealTypename中@列进行了更改,但仍然不起作用。@mree您需要将
@JsonProperty(“MealTypename”)
放入getter。如果要在数据库中使用
MealTypename
,可能需要指定
@Column
名称。我需要将此@JsonProperty(“MealTypename”)放在哪里??在实体类中??