标签: hbmxml

如何在复合id键属性上映射"insert ='false'update ='false'",该属性也用于一对多FK?

我正在使用现有的数据库架构处理遗留代码库.现有代码使用SQL和PL/SQL在DB上执行查询.我们的任务是使项目数据库引擎不可知的一小部分(最初,最终改变一切).我们选择使用Hibernate 3.3.2.GA和"*.hbm.xml"映射文件(而不是注释).遗憾的是,更改现有架构是不可行的,因为我们无法回退任何遗留功能.

我遇到的问题是当我试图映射单向,一对多的关系时,FK 也是复合PK的一部分.这是类和映射文件......

CompanyEntity.java

public class CompanyEntity {
    private Integer id;
    private Set<CompanyNameEntity> names;
    ...
}
Run Code Online (Sandbox Code Playgroud)

CompanyNameEntity.java

public class CompanyNameEntity implements Serializable {
    private Integer id;
    private String languageId;
    private String name;
    ...
}
Run Code Online (Sandbox Code Playgroud)

CompanyNameEntity.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.jboss.org/dtd/hibernate/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="com.example">

    <class name="com.example.CompanyEntity" table="COMPANY">
        <id name="id" column="COMPANY_ID"/>
        <set name="names" table="COMPANY_NAME" cascade="all-delete-orphan" fetch="join" batch-size="1" lazy="false">
            <key column="COMPANY_ID"/>
            <one-to-many entity-name="vendorName"/>
        </set>
    </class>

    <class entity-name="companyName" name="com.example.CompanyNameEntity" table="COMPANY_NAME">
        <composite-id>
            <key-property name="id" column="COMPANY_ID"/>
            <key-property name="languageId" …
Run Code Online (Sandbox Code Playgroud)

hbm hibernate-mapping hbmxml hibernate-onetomany

41
推荐指数
1
解决办法
13万
查看次数

如何从FluentNHibernate生成hbm.xml文件

我想按照这个教程,但不是与我在它映射产生预期的hbm.xml文件中为我的实体,如例如产生简单的.cs类:

public class ProductMap : ClassMap<Product>
Run Code Online (Sandbox Code Playgroud)

但我已经在代码中定义了这些.我正在使用.hbm.xml,我现在可以在标准NHibernate中使用它.

这就是我设置SessionFactory的方法:

    private static ISessionFactory CreateSessionFactory()
    {
        String schemaExportPath = Path.Combine(System.Environment.CurrentDirectory, "Mappings");

        if (!Directory.Exists(schemaExportPath))
            Directory.CreateDirectory(schemaExportPath);


        return Fluently.Configure()
            .Database(MsSqlConfiguration.MsSql2008
                .ConnectionString(c =>c.FromConnectionStringWithKey("connectionString"))
                .Cache(c => c.UseQueryCache()
                    .ProviderClass<HashtableCacheProvider>()).ShowSql())
            .Mappings(m => m.FluentMappings.AddFromAssemblyOf<Program>().ExportTo(schemaExportPath))
            .ExposeConfiguration(c => new SchemaExport(c).SetOutputFile(@"c:\temp\test.sql").Create(false, true))
            .BuildSessionFactory();
    }
Run Code Online (Sandbox Code Playgroud)

nhibernate nhibernate-mapping fluent-nhibernate hbmxml

9
推荐指数
1
解决办法
2656
查看次数

避免"Hibernate异常将Null值分配给基本类型setter的属性"而不使用包装器

在由hibernate管理的实体上有一个长字段,对于null值可能是危险的.当Hibernate尝试将null设置为原语时,将抛出异常.

最佳解决方案应该是使用Long而不是long,因此可以将null分配给Long字段.

但是,我正在开发一个我们不能使用Long或Integer类型的项目.我想知道是否有办法覆盖hibernate类型以使用nullSafe方法或类似的东西.

java hibernate hibernate-mapping hbmxml

7
推荐指数
1
解决办法
3171
查看次数

在hibernate xml映射中映射没有主键的数据库视图

我创建了一个仅用于获取数据的视图(只读)

查看:Grid_View

>我的Hibernate hbm文件

<hibernate-mapping>   
     <class name="hibernate.domain.View" table="Grid_View" mutable="false">
         <property name="ACCT_BR_CD" type="string">
            <column name="ACCT_BR_CD"/>
        </property>
        <property name="ACCT_NO" type="string">
            <column name="ACCT_NO"/>
        </property>
        <property name="LGL_ENTY_NM" type="string">
            <column name="LGL_ENTY_NM"/>
        </property>
        <property name="CUST_CTRY_CD" type="string">
            <column name="CUST_CTRY_CD"/>
        </property>
        <property name="ACCT_SRC_SYS_CD" type="string">
            <column name="ACCT_SRC_SYS_CD"/>
        </property>    
    </class>
</hibernate-mapping>
Run Code Online (Sandbox Code Playgroud)

>因为在我看来它们不是主键,我在映射中没有提到id字段. 但是在hibernate中,id是必需的.

>我的问题

如何在hibernate映射文件中继续没有id的映射.并且它们没有具有独特价值的列,因此没有任何机会将它们作为关键.请帮我解决这个问题

model-view-controller hibernate spring-mvc hibernate-mapping hbmxml

6
推荐指数
1
解决办法
2万
查看次数

org.hibernate.MappingException:未知实体:pack1.Persoana

我收到此错误,我不知道我的hbm.xml文件有什么问题.我使用Eclipse Mars和Hibernate 5.0.2.

错误:

Nov 15, 2015 11:49:19 PM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {5.0.2.Final}
Nov 15, 2015 11:49:19 PM org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
Nov 15, 2015 11:49:19 PM org.hibernate.cfg.Environment buildBytecodeProvider
INFO: HHH000021: Bytecode provider name : javassist
Nov 15, 2015 11:49:19 PM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {5.0.0.Final}
Nov 15, 2015 11:49:20 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
WARN: HHH000402: Using Hibernate built-in connection pool (not for production use!)
Nov 15, 2015 11:49:20 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator …
Run Code Online (Sandbox Code Playgroud)

hibernate hibernate.cfg.xml mappingexception hbmxml

5
推荐指数
1
解决办法
907
查看次数

Hibernate TransientPropertyValueException保存数据时

我正在尝试使用hibernate将数据插入数据库。这是我要执行的动作

    session.beginTransaction();
    pojo.StuDetails stu = new StuDetails();
    stu.setFName(f_name);
    stu.setLName(l_name);
    stu.setSex(sex);
    stu.setDob(dob);

    pojo.Subject sub = new Subject(subject, day, time);
    pojo.SubjectHasStuDetails shs = new SubjectHasStuDetails(stu, sub);

    session.save(shs);
    session.getTransaction().commit();  
Run Code Online (Sandbox Code Playgroud)

但这给我一个错误的说法

线程“主”中的异常org.hibernate.TransientPropertyValueException:非null属性引用了一个瞬态值-瞬态实例必须在当前操作之前保存

这是我的学生详细信息实体

 public class StuDetails  implements java.io.Serializable {


 private Integer id;
 private String FName;
 private String LName;
 private String sex;
 private String dob;
 private Set subjectHasStuDetailses = new HashSet();
 ...
 //constructors and getters, setters
Run Code Online (Sandbox Code Playgroud)

我的学生详细信息hbm.xml

<hibernate-mapping>
    <class name="pojo.StuDetails" table="stu_details" catalog="laravel_test" optimistic-lock="version">
        <id name="id" type="java.lang.Integer">
            <column name="id" />
            <generator class="identity" />
        </id>
        <property name="FName" …
Run Code Online (Sandbox Code Playgroud)

java hibernate hbmxml

4
推荐指数
1
解决办法
1万
查看次数