Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java jpa SqlResultsMapping_Java_Jpa_Binaryfiles_Sqlresultsetmapping - Fatal编程技术网

java jpa SqlResultsMapping

java jpa SqlResultsMapping,java,jpa,binaryfiles,sqlresultsetmapping,Java,Jpa,Binaryfiles,Sqlresultsetmapping,这是我第一次学习SqlResultsMapping 我的数据库结构: 表“公司”: 表“工作人员”: Company.java WriteBinaryFile.java: 我做错了什么错误?我怎样才能解决它 错误本身只是说,你得到了一个公司回来,但试图把它投给一系列的公司。你能检查一下你真正写入流的是什么类型吗?@swinkler哪个文件?WriteBinaryFile:List companyList=q.getResultList;这真的是一个公司阵列列表吗?@KKLMichael您是否使用

这是我第一次学习SqlResultsMapping

我的数据库结构:

表“公司”:

表“工作人员”:

Company.java

WriteBinaryFile.java:


我做错了什么错误?我怎样才能解决它

错误本身只是说,你得到了一个公司回来,但试图把它投给一系列的公司。你能检查一下你真正写入流的是什么类型吗?@swinkler哪个文件?WriteBinaryFile:List companyList=q.getResultList;这真的是一个公司阵列列表吗?@KKLMichael您是否使用IDE,如Eclipse、Netbeans和Intellij?有了它,您可以调试代码。@KKLMichael请检查您的代码。从帖子中删除滚动条花了很多时间,可能有些更改被覆盖了。谢谢
  ID Name
  1  ABC Sdn Bhd
  2  DEF Sdn Bhd
  3  GHI Sdn Bhd
staffID staffName companyID 
0001    Ali       1
0002    Abu       2
0003    Ahmad     2
0004    Siti      3
0005    Raju      3
@Entity
@Table(name = "company")
@SqlResultSetMapping(name = "COMPANY", entities = 
{
 @EntityResult(entityClass = Company.class, fields = 
 {
  @FieldResult(name = "ID", column = "ID"),
  @FieldResult(name = "name", column = "name")
 }),
 @EntityResult(entityClass = Staff.class, fields = 
 {
  @FieldResult(name = "staffID", column = "staffID"), 
   @FieldResult(name = "staffName", column = "staffName"),
   @FieldResult(name = "companyID", column = "companyID")
 })
 })

@XmlRootElement
@NamedQueries(
{
 @NamedQuery(name = "Company.findAll", 
     query = "SELECT c FROM Company c"
    ),
 @NamedQuery(name = "Company.findById", 
     query = "SELECT c FROM Company c WHERE c.id = :id"
    ),
@NamedQuery(name = "Company.findByName", 
    query = "SELECT c FROM Company c WHERE c.name = :name"
   )
})

public class Company implements Serializable 
{
 @OneToMany(mappedBy = "companyID")
 private Collection<Staff> staffCollection;
 private static final long serialVersionUID = 1L;
 @Id
 @Basic(optional = false)
 @Column(name = "ID")
 private Integer id;
 @Column(name = "name")
 private String name;
 //constructor
 //getters and setters
 ...
}
@Entity
@Table(name = "staff")
@XmlRootElement
@NamedQueries(
{
 @NamedQuery(name = "Staff.findAll", query = "SELECT s FROM Staff s"),
 @NamedQuery(name = "Staff.findByStaffID",
    query = "SELECT s FROM Staff s WHERE s.staffID = :staffID"
   ),
 @NamedQuery(name = "Staff.findByStaffName",
    query = "SELECT s FROM Staff s WHERE s.staffName = :staffName"
   )
})

public class Staff implements Serializable
{
 private static final long serialVersionUID = 1L;
 @Id
 @Basic(optional = false)
 @Column(name = "staffID")
 private String staffID;
 @Column(name = "staffName")
 private String staffName;
 @JoinColumn(name = "companyID", referencedColumnName = "ID")
 @ManyToOne
 private Company companyID;
 //constructor
 //getters and setters
 ...
}
public class WriteBinaryFile
{
 public static void main(String[] args) 
   throws FileNotFoundException, IOException, ClassNotFoundException
 {
  EntityManagerFactory emf = Persistence.createEntityManagerFactory("BinaryFileTestPU");
  EntityManager em = emf.createEntityManager();

  StringBuilder sql = new StringBuilder();
  sql.append("select c.*, s.* ");
  sql.append("from company c ");
  sql.append("join staff s ");
  sql.append("on c.ID = s.companyID");
  Query q = em.createNativeQuery(sql.toString(), "COMPANY");
  List<Company[]> companyList = q.getResultList();

  //---Write object to binary file---
  FileOutputStream fos = new FileOutputStream("test.dat");
  ObjectOutputStream oos = new ObjectOutputStream(fos);

  oos.writeObject(companyList);
  oos.flush();
  oos.close();

  em.close();
  emf.close();
 }
}
public class ReadBinaryFile
{
 public static void main(String[] args)
   throws FileNotFoundException, IOException, ClassNotFoundException
 {
  //---Read object from binary file---
  FileInputStream fis = new FileInputStream("test.dat");
  ObjectInputStream ois = new ObjectInputStream(fis); 

  List<Company[]> companyList = (List<Company[]>)
  ois.readObject();
  ois.close();

  for(Company[] company: companyList){
  System.out.println(company[0].getName());
  }
 }
}
Exception in thread "main" java.lang.ClassCastException:
 binaryFileTest.Company cannot be cast to [LbinaryFileTest.Company;
at binaryFileTest.ReadBinaryFile.main...