0 0

hibernate用注解 一对多 报Could not determine type for错误5

配置文件
hibernate.cfg.xml

<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
    <hibernate-configuration>
    <session-factory>
       <property name="connection.url">jdbc:mysql://localhost:3306/test</property>
       <property name="connection.username">root</property>
       <property name="connection.password">root</property>
       <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
       <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
       <property name="show_sql">true</property>
    
      
       <mapping class="tests.cn.com.taiji.sms.entiry.Book" />
       <mapping class="tests.cn.com.taiji.sms.entiry.Student" />
     
    </session-factory>
    </hibernate-configuration>
Student.java
package tests.cn.com.taiji.sms.entiry;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import tests.cn.com.taiji.sms.entiry.Book;

@Entity
@Table(name="stuent")
public class Student
{
@Id
@Column(name="id")
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;


private String memo;


private String name;


private List<Book> book;

public int getId() {
   return id;
}

public void setId(int id) {
   this.id = id;
}
@Column(name="meno")
public String getMemo() {
   return memo;
}

public void setMemo(String memo) {
   this.memo = memo;
}
@Column(name="name")
public String getName() {
   return name;
}

public void setName(String name) {
   this.name = name;
}
         
@OneToMany(mappedBy="student",cascade=CascadeType.ALL,fetch=FetchType.LAZY)
public List<Book> getBook()
{
   return book;
}

public void setBook(List<Book> book)
{
   this.book = book;
}


}

BOOK.java
package tests.cn.com.taiji.sms.entiry;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;


@Entity
@Table(name="zqBook")
public class Book
{
@Id
@Column(name="id")
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;

private String title;

private Student student;

public int getId() {
   return id;
}

public void setId(int id) {
   this.id = id;
}
@Column(name="title")
public String getTitle() {
   return title;
}

public void setTitle(String title) {
   this.title = title;
}
   
@ManyToOne(cascade=CascadeType.REFRESH,optional=false)
@JoinColumn(name="stu_id",referencedColumnName="id")
public Student getStudent() {
   return student;
}

public void setStudent(Student student) {
   this.student = student;
}


}
StudentBookManager

package tests.cn.com.taiji.mhsms.manager;
import java.util.ArrayList;
import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;

import tests.cn.com.taiji.mhsms.web.BasicSessionFactory;
import tests.cn.com.taiji.sms.entiry.Book;
import tests.cn.com.taiji.sms.entiry.Student;

public class StudentBookManager
{
public static void main(String[] args)
{
 
   Student student=new Student();
   Book book1=new Book();
   Book book2=new Book();
   student.setName("王11");
   List<Book> listBook=new ArrayList<Book>();
 
   book1.setTitle("英语");
   book2.setTitle("语文");
   book1.setStudent(student);
   book2.setStudent(student);
 
   listBook.add(book1);
   listBook.add(book2);
   student.setBook(listBook);
 
   Session session=null;
   Transaction tx=null;
   try
   {
    SessionFactory sessionFactory=BasicSessionFactory.sessionFactory;
    session=sessionFactory.openSession();
    tx=session.beginTransaction();
    tx.begin();
    session.save(student);
    tx.commit();
  
   }catch(Exception e)
   {
  
    e.printStackTrace();
  
   }
   finally
   {
    //session.close();
   }
}
}

公共类:
BasicSessionFactory

package tests.cn.com.taiji.mhsms.web;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;

public class BasicSessionFactory
{
public static SessionFactory sessionFactory;

static
{
   sessionFactory=new AnnotationConfiguration().configure("/hibernate/hibernate.cfg.xml").buildSessionFactory();///注意是AnnotationConfiguration,而不是Configuration

}
}

--------------------------------
在运行StudentBookManager时,出现
Exception in thread "main" java.lang.ExceptionInInitializerError
at tests.cn.com.taiji.mhsms.manager.StudentBookManager.main(StudentBookManager.java:39)
Caused by: org.hibernate.MappingException: Could not determine type for: java.util.List, at table: stuent, for columns: [org.hibernate.mapping.Column(book)]

自己试了试将,将标注写到字段上就不会出现这些问题!


我们现在做的工程,就完全可以写在get方法上,请各位高人给指点一下为啥不能写在get方法上呢?自己从网上搜了一下,说必须要么全部写在字段上,要么全部写在get 方法上,但我的这个都是写在了get方法上,为什么还是不行呢?


解决方案:
自己试了近两天,终于将问题找出来了,在一个实体文件中,注解要么全部放在字段上,要么全部放在get方法上,不能混合使用!
2010年8月26日 15:32
目前还没有答案

相关推荐

    Hibernate多表关联配置及错误解决方法

    当出现错误"Could not determine type for: java.util.Set"时,通常是因为缺少了关联配置或类型不匹配。确保在两个相关的类中都有相应的映射,并且类型与数据库字段类型一致。此外,注解的位置一致性也很重要,如...

    java环境变量之JDK的配置

    java的环境变量,关于JDK的配置,对于学习java的人有较好的帮助

    Android Studio更新3.6.3之后出现Could not resolve all artifacts for configuration ‘:classpath’.问题

    Android Studio更新3.6.3之后出现Could not resolve all artifacts for configuration ‘:classpath’.问题你是否和我一样,只因在人群中多看了他一眼?![在这里插入图片描述]...

    Determine Drive Type

    标题“Determine Drive Type”指的是在计算机编程中识别或判断磁盘驱动器类型的技能。这通常涉及到使用操作系统提供的API函数或者编程语言中的特定库来获取有关驱动器的信息。在这个场景中,标签“另类其它”可能...

    php-8.0.3-Win32-vs16-x64.zip

    标题“php-8.0.3-Win32-vs16-x64.zip”表明这是一个包含PHP 8.0.3版本的Windows平台兼容的压缩文件。描述中提到该版本是为64位操作系统设计的,并且是线程安全的。这很重要,因为线程安全意味着在多线程环境中,该...

    xwr14xx_mmw_demo.bin

    out_box_demo

    FlippableStackView.zip

    【标题】"FlippableStackView.zip"是一个包含Android开发相关源码的压缩包,主要涉及一个名为"FlippableStackView"的自定义视图组件。这个组件可能用于实现卡片堆叠翻转效果,常见于各种应用的交互设计中,如应用...

    OracleApplicationExpressInstallationGuideForOracleDatabase12.pdf 英文原版

    Oracle Application Express Installation Guide For Oracle Database 12

    stetho okhttp chrome 检测网络需要的jar包

    Stetho是一个强大的Android调试库,由Facebook开发并开源,它允许开发者在Chrome浏览器中对Android应用进行深度的网络检测、查看数据库以及检查Shared Preferences(SP)。这个工具极大地简化了开发者在开发过程中对...

    adb Android SDK Platform-Tools 23

    **adb(Android Debug Bridge)是Android开发者不可或缺的工具之一,它是Android SDK Platform-Tools 23中的核心组件。本文将深入探讨adb的功能、用途以及如何在Android开发和调试过程中使用它。** ### 1. adb简介 ...

    vision_opencv-noetic.zip

    这里,我们加载了一个TensorFlow格式的SSD模型,对输入图像进行前向传播,得到目标检测的结果。 除了基本功能,OpenCV还提供了高级特性,如aruco标记识别、光流分析、结构光三维重建等。aruco模块用于识别和定位...

    Android重写Gallery

    // Probably need to make sure we are not allocating objects (strings, etc.) in loops public class MyGallery extends FrameLayout { // Constants private final int swipe_min_distance = 120; private...

    完美解决Jpush[获取sdk版本失败!]的问题

    错误日志如下: 5-31 12:47:40.088 23896-23896/? E/JIGUANG-JCore: [JCoreGlobal] Get sdk version fail![获取sdk版本失败!] 05-31 12:47:40.088 23896-23896/? W/System.err: java.lang.UnsatisfiedLinkError: ...

    com.serenegiant:common:1.5.20

    引入摄像头(uvccamera),在github下载资源common的时候一直下载不下来说是连接不上网络问题

    The skin does not exist: Unable to determine the release version

    标题 "The skin does not exist: Unable to determine the release version" 提到的问题,通常是与软件部署或更新时出现的错误有关,尤其是与版本控制或者界面显示有关。这可能是指在使用某些开源工具或框架时,系统...

    Determine if a File Exists

    在编程领域,经常需要判断一个文件是否存在,这是基础但至关重要的操作。"Determine if a File Exists" 这个主题涵盖了文件系统操作的核心概念,它在各种应用中都有广泛的应用,比如数据验证、文件处理流程或者用户...

    Determine-the-type-of-drive.rar_The Drive

    "Determine-the-type-of-drive.rar_The Drive" 这个压缩包文件提供了关于识别计算机驱动器类型以及操作系统位数的方法。这里我们将深入探讨如何确定驱动器类型(硬盘、移动磁盘或光驱)以及如何辨别系统是32位还是64...

    DevExpress VCL v2012 vol 1.6源码、例子、帮助-part2

    Q438267 - Server Mode - Clicking a Filter Row cell in a column containing Null values throws the "Could not convert variant of type (Null) into type (OleStr)" exception Q435475 - Tabular and Layout ...

    Android Studio default not found错误解决办法

    在Android开发过程中,Android Studio是首选的集成开发环境(IDE),但有时会遇到各种问题,如本文提到的“Android Studio default not found”错误。这个错误通常发生在尝试编译或同步Gradle项目时,提示...

    Android 选择图片、上传图片之PictureSelector

    集成方式 implementation ...build.gradle加入 allprojects {  repositories {  jcenter() ... } }   ...PictureSelector适配已经做的很好了,功能齐全,且兼容性好 ...4.动态获取系统

Global site tag (gtag.js) - Google Analytics