ArrayList 不能使用 Texo 生成的模型设置为休眠状态
ArrayList cannot be case to Set In hibernate using Texo generated Models
我已经从 EMF 生成了 texo 模型。
代码如下
try{
Session session = factory.openSession();
Transaction tx = null;
Integer employeeID = null;
try{
tx = session.beginTransaction();
Country country = new Country();
country.setCode("PK");;
country.setCountry("PAKISTAN");
System.out.println((Integer) session.save(country));
//^ HERE THE ERROR COMES
tx.commit();
}catch (HibernateException e) {
if (tx!=null) tx.rollback();
e.printStackTrace();
}finally {
session.close();
}
}catch (Throwable ex) {
System.err.println("Failed to create sessionFactory object." + ex);
throw new ExceptionInInitializerError(ex);
}
当我尝试添加带或不带位置的国家/地区对象时,出现错误
Failed to create sessionFactory object.java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.util.Set
模型是由 Texo 生成的,有 List 和简单的 getter 和 setter 生成。
我已经检查过这个 link. 但我没有找到任何答案。
COUNTRY.java
import java.util.ArrayList;
import java.util.List;
public class Country {
private int iD = 0;
private String country = null;
private String code = null;
private List<Location> locations = new ArrayList<Location>();
public int getID() {
return iD;
}
public void setID(int newID) {
iD = newID;
}
public String getCountry() {
return country;
}
public void setCountry(String newCountry) {
country = newCountry;
}
public String getCode() {
return code;
}
public void setCode(String newCode) {
code = newCode;
}
public List<Location> getLocations() {
return locations;
}
public void setLocations(List<Location> newLocations) {
locations = newLocations;
}
@Override
public String toString() {
return "Country " + " [iD: " + getID() + "]" + " [country: "
+ getCountry() + "]" + " [code: " + getCode() + "]";
}
}
请尝试将 Set<Location> sLoc = new HashSet<Location>(locations);
更改为 List<Location> sLoc = new ArrayList<Location>(locations);
。你有你的 locations
作为数组和 sLoc
作为 Hashset 所以它给出了转换异常..
希望这能解决您的问题
如 Texo 中所述,为了使用 Hibernate,我必须在 java 实体中生成 SET 而不是 LIST。
所以我不得不配置 TEXO 为所有实体执行此操作。
生成注释模型。
找到实体(位置)并添加新注释。转到其属性并设置 USE LIST = FALSE
生成 texo 模型,所有需要的实体将从 List 更改为 Set
我已经从 EMF 生成了 texo 模型。
代码如下
try{
Session session = factory.openSession();
Transaction tx = null;
Integer employeeID = null;
try{
tx = session.beginTransaction();
Country country = new Country();
country.setCode("PK");;
country.setCountry("PAKISTAN");
System.out.println((Integer) session.save(country));
//^ HERE THE ERROR COMES
tx.commit();
}catch (HibernateException e) {
if (tx!=null) tx.rollback();
e.printStackTrace();
}finally {
session.close();
}
}catch (Throwable ex) {
System.err.println("Failed to create sessionFactory object." + ex);
throw new ExceptionInInitializerError(ex);
}
当我尝试添加带或不带位置的国家/地区对象时,出现错误
Failed to create sessionFactory object.java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.util.Set
模型是由 Texo 生成的,有 List 和简单的 getter 和 setter 生成。
我已经检查过这个 link. 但我没有找到任何答案。
COUNTRY.java
import java.util.ArrayList;
import java.util.List;
public class Country {
private int iD = 0;
private String country = null;
private String code = null;
private List<Location> locations = new ArrayList<Location>();
public int getID() {
return iD;
}
public void setID(int newID) {
iD = newID;
}
public String getCountry() {
return country;
}
public void setCountry(String newCountry) {
country = newCountry;
}
public String getCode() {
return code;
}
public void setCode(String newCode) {
code = newCode;
}
public List<Location> getLocations() {
return locations;
}
public void setLocations(List<Location> newLocations) {
locations = newLocations;
}
@Override
public String toString() {
return "Country " + " [iD: " + getID() + "]" + " [country: "
+ getCountry() + "]" + " [code: " + getCode() + "]";
}
}
请尝试将 Set<Location> sLoc = new HashSet<Location>(locations);
更改为 List<Location> sLoc = new ArrayList<Location>(locations);
。你有你的 locations
作为数组和 sLoc
作为 Hashset 所以它给出了转换异常..
希望这能解决您的问题
如 Texo 中所述,为了使用 Hibernate,我必须在 java 实体中生成 SET 而不是 LIST。
所以我不得不配置 TEXO 为所有实体执行此操作。
生成注释模型。
找到实体(位置)并添加新注释。转到其属性并设置 USE LIST = FALSE
生成 texo 模型,所有需要的实体将从 List 更改为 Set