本文的目的是介绍HibernateMSSQLdatetime2映射的详细情况,特别关注sql映射文件的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解Hibernate
本文的目的是介绍Hibernate MSSQL datetime2映射的详细情况,特别关注sql映射文件的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解Hibernate MSSQL datetime2映射的机会,同时也不会遗漏关于Hibernate + MSSQL +通过包含进行全文本搜索、Hibernate - 无法提交 Hibernate 事务;嵌套异常是 org.hibernate.TransactionException、Hibernate -- hibernate.cfg.xml 核心配置文件、Hibernate 1、Hello Hibernate的知识。
本文目录一览:- Hibernate MSSQL datetime2映射(sql映射文件)
- Hibernate + MSSQL +通过包含进行全文本搜索
- Hibernate - 无法提交 Hibernate 事务;嵌套异常是 org.hibernate.TransactionException
- Hibernate -- hibernate.cfg.xml 核心配置文件
- Hibernate 1、Hello Hibernate
Hibernate MSSQL datetime2映射(sql映射文件)
我有一个存储过程,该过程返回数据库中数据类型为datetime2以及Java文件中Date为数据的列。当我尝试在从数据库获取的时间上调用getTime()时。它返回的19994321211毫秒等于IST
2015年5月4日星期一。理想情况下,它应该返回2015-05-04 15:21:52的毫秒,因为这是直接执行过程时数据库中显示的时间。
由于我是Hibernate的新手,所以我无法理解问题是否与hibernate映射有关,或者我是否错过了其他事情。
<hibernate-mapping>
<sql-query name="getMLC">
<return-scalar column="mlcid" type="int" />
<return-scalar column="completionTime" type="date" />
{ call lsc.MLC_Get(:ABC,:XYZ,:ErrorCode)}
</sql-query>
</hibernate-mapping>
class Mlc implements java.io.Serializable {
private Integer mlcid;
private Date completionTime;
// getter and setter
}
Hibernate + MSSQL +通过包含进行全文本搜索
我的目标是将MSSQL全文功能与HQL一起使用。在哪种情况下,我编写了一个特定的SQLFunction,将我的“全文”函数映射到contains函数。
但是,问题在于,在HQL中(似乎)我必须明确使用返回类型,MSSQL Contains函数不使用或不接受该返回类型。
这就是它在MSSQL中的工作方式:
select distinct id from content c where CONTAINS(c.content, ''p'')
这是我在HQL中使用它的想法:
select id from Content c where fulltext(c.content, ''p'')
这不起作用,因为HQL需要返回类型。例如,这将在HQL中解析:
select id from Content c where fulltext(c.content, ''p'') = true
它将生成为SQL:
select distinct id from content c where CONTAINS(c.content, ''p'') = 1
在MS SQL中不起作用。
到目前为止,我的想法是,但是在这种设置下似乎是不可能的:
- 使hibernate解析函数没有返回值(在我使用的版本中,Hibernate不支持此功能)
- 尝试混合使用HQL和SQL(似乎也不起作用)
有人有其他想法或帮助吗?
我使用的Hibernate版本是3.2.6ga和MSSQL Server 2008。
答案1
小编典典我找到了一种对我有用的方法。
而不是产生
CONTAINS(a,b)
它会产生
CONTAINS(a,b) AND 1
并结合HQL查询
fulltext(a,b) = true
它将导致:
CONTAINS(a,b) AND 1 = 1
而且有效。
Hibernate - 无法提交 Hibernate 事务;嵌套异常是 org.hibernate.TransactionException
如何解决Hibernate - 无法提交 Hibernate 事务;嵌套异常是 org.hibernate.TransactionException
我需要从两个不同的数据库中获取数据。为此,我创建了两个会话、两个事务管理器。我正在从第一个事务方法调用第二个事务方法。它在一段时间内工作正常,但之后由于某种原因,hibernate 抛出以下异常。谁能帮我?提前致谢。
#include<stdlib.h>
/*
{
"name":"name1","city":"city1","phone":"125698745663"
}
/* Boxes of my list */
typedef_struct Box
{
char* current_string;
Box* next;
}Box;
/* Define the structure of the list that I''ll return after*/
typedef_struct list
{
Box* beginning;
}list;
/*The function that return the list of the objects that existed in our files*/
**char lire (FILE* my_file) //It is possibly to put the path of the file as an argument
{
char* nameFile;
printf("enter the name of the file");
scanf("%s",&nameFile);
my_file = fopen( "nameFile","r");
if (my_file != NULL)
{
Box* temp;
int i=0;
list* my_list;
int first_time = 0;
/* browse file elements */
do
{
char c = fgetc(my_file);
/* I put the following condition to get the value without its key*/
if(c == ":")
{
while(c!=",")
{
temp->current_string[i] = c;
i++;
// printf("%c",c);
c=fgetc(my_file);
}
}
/*I put this condition to pass to the following element of the list and fill it*/
if(c == "}")
{
first_time++;
/*This condition is for getting the begining of the list because it is what distinguishes the list*/
if(first_time==1)
my_list->beginning->current_string = temp->current_string;
temp = temp->next;
}
} while (c != EOF);
fclose(my_file);
}
return my_list;
}```
Hibernate -- hibernate.cfg.xml 核心配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- property 元素用于配置Hibernate中的属性
键:值
-->
<!-- hibernate.connection.driver_class : 连接数据库的驱动 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- hibernate.connection.username : 连接数据库的用户名 -->
<property name="hibernate.connection.username">root</property>
<!-- hibernate.connection.password : 连接数据库的密码 -->
<property name="hibernate.connection.password">123</property>
<!-- hibernate.connection.url : 连接数据库的地址,路径 -->
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernatedem</property>
<!-------------------------------------------------------------------------------->
<!-- show_sql: 操作数据库时,会 向控制台打印sql语句 -->
<property name="show_sql">true</property>
<!-------------------------------------------------------------------------------->
<!-- format_sql: 打印sql语句前,会将sql语句先格式化 -->
<property name="format_sql">true</property>
<!-------------------------------------------------------------------------------->
<!-- hbm2ddl.auto: 生成表结构的策略配置
update(最常用的取值): 如果当前数据库中不存在表结构,那么自动创建表结构.
如果存在表结构,并且表结构与实体一致,那么不做修改
如果存在表结构,并且表结构与实体不一致,那么会修改表结构.会保留原有列.
create(很少):无论是否存在表结构.每次启动Hibernate都会重新创建表结构.(数据会丢失)
create-drop(极少): 无论是否存在表结构.每次启动Hibernate都会重新创建表结构.每次Hibernate运行结束时,删除表结构.
validate(很少):不会自动创建表结构.也不会自动维护表结构.Hibernate只校验表结构. 如果表结构不一致将会抛出异常.
-->
<property name="hbm2ddl.auto">update</property>
<!-------------------------------------------------------------------------------->
<!-- 数据库方言配置
org.hibernate.dialect.MySQLDialect (选择最短的)
-->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<!-------------------------------------------------------------------------------->
<!-- hibernate.connection.autocommit: 事务自动提交 -->
<property name="hibernate.connection.autocommit">true</property>
<!-------------------------------------------------------------------------------->
<!-- 将Session与线程绑定=> 只有配置了该配置,才能使用getCurrentSession -->
<property name="hibernate.current_session_context_class">thread</property>
<!-------------------------------------------------------------------------------->
<!-- 引入ORM 映射文件
填写src之后的路径
-->
<mapping resource="com/itheima/a_hello/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
Hibernate 1、Hello Hibernate
所使用到的jar 包:
1、创建实体类
public class User {
private Integer id;
private String name;
private String address;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
2、配置映射文件
<hibernate-mapping>
<class name="cn.model.User" table="USER" lazy="true">
<id name="id" column="ID">
<generator></generator>
</id>
<property name="name" column="NAME" type="java.lang.String" />
<property name="address" column="ADDRESS" type="java.lang.String" />
</class>
</hibernate-mapping>
3、配置hiberante.cfg.xml;hibernate.properties 详细 http://blog.csdn.net/oxiaoxio/article/details/49304591
<hibernate-configuration>
<session-factory name="sessionFactory">
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/spring?useUnicode=true&characterEncoding=UTF-8</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password"></property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<mapping resource="cn/hbm/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
4、测试用例:
public class Conn {
public void addUser(){
Configuration cfg=new Configuration();
cfg.configure();
ServiceRegistry sr=new ServiceRegistryBuilder().applySettings(cfg.getProperties()).buildServiceRegistry();
SessionFactory sf=cfg.buildSessionFactory(sr);
Session s=sf.openSession();
Transaction trans=s.beginTransaction();
User user=new User();
user.setName("汤姆");
user.setAddress("北海");
s.save(user);
trans.commit();
s.close();
}
}
代码优化:
新建一个类名字是HibernateSessionFactory:
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;
public class HibernateSessionFactory {
private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
private static org.hibernate.SessionFactory sessionFactory;
private static Configuration configuration = new Configuration();
private static ServiceRegistry serviceRegistry;
static {
try {
configuration.configure();
serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
} catch (Exception e) {
System.err.println("%%%% Error Creating SessionFactory %%%%");
e.printStackTrace();
}
}
private HibernateSessionFactory() {
}
public static Session getSession() throws HibernateException {
Session session = (Session) threadLocal.get();
if (session == null || !session.isOpen()) {
if (sessionFactory == null) {
rebuildSessionFactory();
}
session = (sessionFactory != null) ? sessionFactory.openSession()
: null;
threadLocal.set(session);
}
return session;
}
public static void rebuildSessionFactory() {
try {
configuration.configure();
serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
} catch (Exception e) {
System.err.println("%%%% Error Creating SessionFactory %%%%");
e.printStackTrace();
}
}
public static void closeSession() throws HibernateException {
Session session = (Session) threadLocal.get();
threadLocal.set(null);
if (session != null) {
session.close();
}
}
public static org.hibernate.SessionFactory getSessionFactory() {
return sessionFactory;
}
public static Configuration getConfiguration() {
return configuration;
}
}
优化过以后代码:
public void addUser(){
Session s=HibernateSessionFactory.getSession();
Transaction trans=s.beginTransaction();
User user=new User();
user.setName("汤姆11");
user.setAddress("北海");
s.save(user);
trans.commit();
s.close();
}
关于Hibernate MSSQL datetime2映射和sql映射文件的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于Hibernate + MSSQL +通过包含进行全文本搜索、Hibernate - 无法提交 Hibernate 事务;嵌套异常是 org.hibernate.TransactionException、Hibernate -- hibernate.cfg.xml 核心配置文件、Hibernate 1、Hello Hibernate的相关知识,请在本站寻找。
本文标签: