我想映射类主题到主题表。
主题。JAVA
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Column;
public class Themes
{
private int id;
private String theme;
private int orderInfo;
public Themes(String theme,int order_info)
{
System.out.println("OK");
this.theme=theme;
this.orderInfo=order_info;
}
public int getId()
{
return id;
}
public void setId(int id)
{
this.id=id;
}
public String getTheme()
{
return theme;
}
public void setTheme(String theme)
{
this.theme=theme;
}
public int getOrder()
{
return orderInfo;
}
public void setOrder(int order_info)
{
this.orderInfo=order_info;
}
}
主题。哈佛商学院。xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="Themes" table="themes">
<meta attribute="class-description">
This class contains theme details.
</meta>
<id name="id" type="int" column="id">
<generator class="native"/>
</id>
<property name="text" column="text" type="string"/>
<property name="orderInfo" column="order_info" type="int"/>
</class>
</hibernate-mapping>
冬眠cfg。xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration SYSTEM
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="hibernate.connection.driver_class">
com.mysql.jdbc.Driver
</property>
<!-- Assume test is the database name -->
<property name="hibernate.connection.url">
jdbc:mysql://localhost/content_templating_data
</property>
<property name="hibernate.connection.username">
root
</property>
<property name="hibernate.connection.password">
</property>
<!-- List of XML mapping files -->
<mapping resource="themes.hbm.xml"/>
<mapping resource="patterns.hbm.xml"/>
<mapping resource="filler.hbm.xml"/>
<mapping resource="sentences.hbm.xml"/>
</session-factory>
</hibernate-configuration>
我正在读取csv文件的内容,并希望使用以下代码将其插入数据库。
管理ata.java
import java.io.*;
import org.apache.log4j.BasicConfigurator;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class ManageData {
private static SessionFactory factory;
private static String csvfile="C:\\Users\\ANJANEY\\IdeaProjects\\hiveminds\\src\\file.csv";
private static String line="";
private static String splitby=",";
private static BufferedReader br=null;
private static SessionFactory getSessionFactory() {
// create configuration using hibernate API
Configuration configuration = new Configuration();
configuration.setProperty("connection.driver_class",
"com.mysql.jdbc.Driver");
configuration.setProperty("hibernate.connection.url",
"jdbc:mysql://localhost:3306/content_templating_data");
configuration.setProperty("hibernate.connection.username", "root");
configuration.setProperty("hibernate.connection.password", "");
return configuration.buildSessionFactory();
}
public static void main(String args[])throws IOException {
int count=0;
try
{
factory=getSessionFactory();
System.out.println("Factory Object created...");
}
catch (Throwable ex)
{
System.out.println("Failed to create Session Factory Object " + ex);
//throw new ExceptionInInitializerError();
}
try {
int order_info;
br = new BufferedReader(new FileReader(csvfile));
ManageData MD = new ManageData();
line = br.readLine();
int length=0;
while ((line = br.readLine()) != null) {
count++;
String[] str = line.split(splitby);
length=str.length;
order_info = Integer.parseInt(str[2]);
//Adding theme details in the theme table
Integer themeID = MD.addTheme(str[1], order_info);
}
}
catch(FileNotFoundException e)
{
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}finally{
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
System.out.println("Done "+count);
}
//Method to add in theme table
public Integer addTheme(String theme,int order_info){
Session session = factory.openSession();
Transaction tx = null;
Integer themeID = new Integer(0);
try{
tx = session.beginTransaction();
Themes th=new Themes(theme,order_info);
themeID = (Integer) session.save(th);
System.out.println("OKAY");
tx.commit();
}catch (HibernateException e) {
if (tx!=null) tx.rollback();
e.printStackTrace();
}finally {
session.close();
}
return themeID;
}
我得到以下错误
线程“main”组织中出现异常。冬眠MappingException:未知实体:组织中的主题。冬眠impl。SessionFactoryImpl。getEntityPersister(SessionFactoryImpl.java:693)位于org。冬眠impl。SessionImpl。getEntityPersister(SessionImpl.java:1485)位于org。冬眠事件def。AbstractSaveEventListener。saveWithGenerateId(AbstractSaveEventListener.java:120)位于org。冬眠事件def。DefaultSaveOrUpdateEventListener。saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)位于org。冬眠事件def。DefaultSaveEventListener。saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:56)位于org。冬眠事件def。DefaultSaveOrUpdateEventListener。entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)位于org。冬眠事件def。DefaultSaveEventListener。org上的performSaveOrUpdate(DefaultSaveEventListener.java:50)。冬眠事件def。DefaultSaveOrUpdateEventListener。org上的onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)。冬眠impl。SessionImpl。fireSave(SessionImpl.java:713)位于org。冬眠impl。SessionImpl。在org上保存(SessionImpl.java:701)。冬眠impl。SessionImpl。在ManageData上保存(SessionImpl.java:697)。在ManageData上添加主题(ManageData.java:114)。main(ManageData.java:66)位于sun。反映NativeMethodAccessorImpl。在sun上调用0(本机方法)。反映NativeMethodAccessorImpl。在sun上调用(NativeMethodAccessorImpl.java:57)。反映DelegatingMethodAccessorImpl。在java上调用(DelegatingMethodAccessorImpl.java:43)。朗。反思。方法在com上调用(Method.java:606)。intellij。rt.执行。应用阿普曼。main(AppMain.java:134)
错误是您应该将您的包名称添加到Themes.hbm.xml
另一个问题是你的映射不等同于你的getter
<property name="text" column="text" type="string"/>
<property name="orderInfo" column="order_info" type="int"/>
文本不存在,请将其更改为主题。orderInfo getter/setter应该如下所示:
public int getOrderInfo() {
return orderInfo;
}
public void setOrderInfo(int order_info) {
this.orderInfo = order_info;
}
比主题课对我更有效。
你也可以用类似的东西。
<hibernate-mapping package="my.package">
<class name="Themes" table="themes">
....
</hibernate-mapping>
我在Kotlin-vertx项目中配置了Hibernate,我设法设置了所有内容,但当我运行HQL查询时,它会输出: 提前谢了。
问题内容: 特定实体存在映射例外。不能弄清楚问题出在哪里。我从头到尾检查了所有映射3次。我仍然收到映射异常。 发送给员工的电子邮件仅映射一次。但它仍然报告错误重复映射 错误是: 电子邮件Pojo email.hbm.xml 相关脚本 发送给员工的电子邮件仅映射一次。但它仍然报告错误重复映射 问题答案: 您是否将Employee中的集合设置为逆?
是否强制将我的外键实体从ClassA映射到ClassB中的主实体?
我认为错误并不在注释中,因为我更改了几次注释,仍然得到了相同的异常。
我正在使用Hibernate和JPA注释来映射我的类。当hibernate尝试映射这个类时,我遇到了一个问题 我的Social alStat类是: 我得到了这个错误: 我猜发生这种情况是因为我试图映射到一个基本类,但@ElementCollection注释不应该解决这个问题吗? 我的item类如下所示:
问题内容: 我有一个经典的Hibernate 用。工作正常。但是,数据库中大约有500个不同的值,我需要将它们中的大约30个映射到Java类(子类),将其余的映射到父Java类。 可以将问题建模为对Animal类的示例继承。 因此,我在Java代码中使用定义了大约30个Animal的子类。当Hibernate发现鉴别器的未知值时,它将抛出。但是,我需要将这些未知的标识符值映射到一个实体,最好是An