Java 如何在UTF-8中向Google Cloud SQL写入数据

Java 如何在UTF-8中向Google Cloud SQL写入数据,java,google-app-engine,jpa,google-cloud-sql,Java,Google App Engine,Jpa,Google Cloud Sql,我使用谷歌应用程序引擎和谷歌云SQL开发应用程序 我正在用希伯来语将数据写入Google Cloud SQL,数据写为“?” 如何将其转换为UTF-8 多谢各位 实体实例 package com.darimpo.shared.entities; import javax.persistence.Entity; import javax.persistence.Table; import javax.persistence.Transient; import com.darimpo.share

我使用谷歌应用程序引擎和谷歌云SQL开发应用程序 我正在用希伯来语将数据写入Google Cloud SQL,数据写为“?” 如何将其转换为UTF-8 多谢各位

实体实例

package com.darimpo.shared.entities;

import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;

import com.darimpo.shared.utilities.Utilities.Parameters;

@Entity
@Table(name = "AddressesTable")
public class Address extends Base {

private long buildingId;
private long floorId;
private long apartmentId;   
private long userId;

@Transient
private String floorName;
@Transient
private String apartmentName;

public Address() {

}

public Address(long buildingId) {
    setBuildingId(buildingId);
}
public Address(long buildingId,long floorId) {
    this(buildingId);
    setFloorId(floorId);
}
public Address(long buildingId,long floorId,long longId) {
    this(buildingId,floorId);
    setApartmentId(apartmentId);
}

public Address(Parameters parameters) {
    super(parameters);
    setUserId(parameters.getLong(USER_ID));
    setBuildingId(parameters.getLong(BUILDING_ID));
    setFloorId(parameters.getLong(FLOOR_ID));
    setApartmentId(parameters.getLong(APARTMENT_ID));
    setFloorName(parameters.getString(FLOOR_NAME));
    setApartmentName(parameters.getString(APARTMENT_NAME));
}
@Override
protected void onCopy(Base source) {
    super.onCopy(source);
    if(source instanceof Address){
        Address address = (Address)source;
        setBuildingId(address.getBuildingId());
        setFloorId(address.getFloorId());
        setApartmentId(address.getApartmentId());
        setFloorName(address.getFloorName());
        setApartmentName(address.getApartmentName());
    }
}
public long getUserId() {
    return userId;
}
public void setUserId(long userId) {
    this.userId = userId;
}
public long getBuildingId() {
    return buildingId;
}
public void setBuildingId(long buildingId) {
    this.buildingId = buildingId;
}
public long getFloorId() {
    return floorId;
}
public void setFloorId(long floorId) {
    this.floorId = floorId;
}
public long getApartmentId() {
    return apartmentId;
}
public void setApartmentId(long apartmentId) {
    this.apartmentId = apartmentId;
}
public String getFloorName() {
    return floorName;
}
public void setFloorName(String floorName) {
    this.floorName = floorName;
}
public String getApartmentName() {
    return apartmentName;
}
public void setApartmentName(String apartmentName) {
    this.apartmentName = apartmentName;
}
public boolean isFullAddress() {
    return buildingId != NO_ID && floorId != NO_ID && apartmentId != NO_ID;
}

@Override
public boolean equals(Object obj) {
    if(obj instanceof Address){
        Address address = (Address)obj;
        if(getUserId() == address.getUserId()){
            return getBuildingId() == address.getBuildingId() && 
                    getFloorId() == address.getFloorId() &&
                    getApartmentId() == address.getApartmentId();
        }
    }
    return super.equals(obj);
}
public static final String BUILDING_ID = "buildingId";
public static final String USER_ID = "userId";
public static final String FLOOR_ID = "floorId";
public static final String APARTMENT_ID = "apartmentId";
public static final String FLOOR_NAME = "floorName";
public static final String APARTMENT_NAME = "apartmentName";
}

如何插入实体的示例

public Base insert(Base base){
    EntityManager em = entityManagerFactory.createEntityManager();
    try{
        em.getTransaction().begin();
        base.setLastUpdated(getCoreServer().getTimeManager().getCurrentTime().getTime());
        em.persist(base);
        em.getTransaction().commit();
        return base;
    }
    finally{
        em.close();
    }
}
如何选择实体的示例

public Object select(DarimpoQuery selectQuery){
    EntityManager em = entityManagerFactory.createEntityManager();
    try{
        em.getTransaction().begin();
        Query query = 
        em.createQuery(selectQuery.createSelectQuery()); 
        addParametersQuery(selectQuery, query);
    }
        Object result = query.getResultList();
        if(selectQuery.isSingleResult() && result instanceof List){
            List<Object> results = (List)result;
            return results.isEmpty() ? null : results.get(0);
        }
        return result;
    }finally{
        em.close();
    }
}
public Object select(查询选择查询){
EntityManager em=EntityManager工厂。createEntityManager();
试一试{
em.getTransaction().begin();
查询=
em.createQuery(selectQuery.createSelectQuery());
添加参数查询(选择查询,查询);
}
对象结果=query.getResultList();
if(selectQuery.isSingleResult()&&result instanceof List){
列表结果=(列表)结果;
返回results.isEmpty()?null:results.get(0);
}
返回结果;
}最后{
em.close();
}
}
从数据库中选择一个实体后,我得到字符串“?”

您可以在此链接上查看实体如何保存在数据库中
再次感谢

请提供您的代码我编辑了我的问题谢谢。如何创建实体?您是否有web前端或类似移动客户端的东西?是的,我将params form web app(gwt)发送到服务器并在服务器中创建实体,您可以看到带有参数“public Address(Parameters)”的构造函数,然后调用insert方法。谢谢你有没有检查你的构造器是否每个都已经用UTF 8编码?你能提供你的代码吗?我编辑了我的问题谢谢。如何创建实体?您是否有web前端或类似移动客户端的东西?是的,我将params form web app(gwt)发送到服务器并在服务器中创建实体,您可以看到带有参数“public Address(Parameters)”的构造函数,然后调用insert方法。谢谢你,如果每个都已经用UTF 8编码,你有没有检查你的构造函数?