标签: hbm2ddl

使用hibernate hbm2ddl.auto = update:如何更改列不再需要值?

我有一个曾经是not-null ="true"的属性.该字段不再需要值,因此我将其更改为not-null ="false",但该表未在数据库中更新.添加新属性不会产生任何问题.

是否有可能hbm2ddl.auto = update自动更改表以删除not-null ="true"?(我知道我可以写一个sql脚本来改变它但是想让它自动更新)

hibernate hbm2ddl

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

如何使用Hibernate创建数据库架构

阅读Hibernate之后:hbm2ddl.auto =在生产中更新?出现了一些问题.首先,我使用Hibernate的原因是独立于数据库供应商(不需要编写10个版本的"相同"sql查询,例如.tsql vs sql).

在创建数据库模式(生产环境)时出现我的问题.据我所知,我有两种选择.

  1. hbm2dll =更新
  2. 纯sql(ddl)脚本.

在上面的主题中广泛讨论了第一种替代方案.第二种选择是坏的,因为这意味着我回到了第一个问题:"不想创建依赖于数据库供应商的sql语句".(如果"all"(数据库Hibernate支持)正在实现DDL(用于定义和检查数据库结构的SQL子集),则此语句可能为false .)相等).

java database hibernate hbm2ddl

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

多个JPA持久性单元指向同一个数据库?

我们可以将多个JPA持久性单元指向同一个数据库,在不同的Java项目中同时部署在服务器上吗?同时我的意思是,不是在同一秒部署,而是部署在一起.我正在使用hsqldb数据库.

我正在为我的项目提供客户端 - 服务器模型.我有一个统一的数据库表,其中服务器填充数据,然后客户端访问不同项目中的数据.我可以通过服务器成功填充数据库.但是当我部署客户端项目时,数据库中的所有数据都会被删除.

<property name="hibernate.hbm2ddl.auto" value="update" />用于两个持久性单元.

hibernate jpa hbm2ddl persistence-unit

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

为什么hbm2ddl.SchemaExport不在这里运行?

尝试在NHibernate 2.1.2.4000中使用IInterceptor我有以下测试代码:

public class TestingNHibernateInterceptors
{
    [Fact]
    public void can_intercept_delete_for_audit_log()
    {
        FullyConfigureDb();
        Session(s => s.Linq<Person>().Any().ShouldBe(false));
    }
    ISessionFactory _sessions;
    void Session(Action<ISession> @do)
    {
        using (var s = _sessions.OpenSession())
        {
            @do(s);
            s.Flush();
        }
    }
    void FullyConfigureDb()
    {
        var cfg = CreateConfig();
        _sessions = cfg.BuildSessionFactory();
        BuildSchema(cfg);
    }
    Configuration CreateConfig()
    {
        return Fluently.Configure()
            .Database(new SQLiteConfiguration().InMemory())
            .Mappings(x => x.FluentMappings.Add<PersonMap>())
            .BuildConfiguration()
            .SetProperty("proxyfactory.factory_class", "NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle")
            .SetProperty("show_sql", "true");
    }
    void BuildSchema(Configuration config)
    {
        var se = new NHibernate.Tool.hbm2ddl.SchemaExport(config);
        se.Execute(false, true, false, _sessions.OpenSession().Connection, null);
    }
    public class Person
    { …
Run Code Online (Sandbox Code Playgroud)

.net sqlite nhibernate hbm2ddl

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

使用hbm2ddl创建ID和DB方案的共享序列生成器

所有.我有通过hbm2ddl生成DB方案的问题.我想对所有私钥使用共享序列生成器.所以我在某个实体中定义了一次.

@Entity
@SequenceGenerator(name = "MY_SEQUENCE_GENERATOR", sequenceName = "MY_SEQ")
public class MyEntity implements Serializable {
 ....
}
Run Code Online (Sandbox Code Playgroud)

然后我想对所有id使用这个序列生成器.

public class SomeEntity1 implements Serializable {
  @Id
  @GeneratedValue(strategy = GenerationType.SEQUENCE, generator =  "MY_SEQUENCE_GENERATOR")
  Long id;     
  ....
}

public class SomeEntity2 implements Serializable {
  @Id
  @GeneratedValue(strategy = GenerationType.SEQUENCE, generator =  "MY_SEQUENCE_GENERATOR")
  Long id;     
  ....
}
Run Code Online (Sandbox Code Playgroud)

当我运行hbm2ddl ant任务时,我得到一个异常:

[hibernatetool] javax.persistence.PersistenceException: org.hibernate.AnnotationException: Unknown Id.generator: MY_SEQUENCE_GENERATOR
[hibernatetool] org.hibernate.AnnotationException: Unknown Id.generator: MY_SEQUENCE_GENERATOR
Run Code Online (Sandbox Code Playgroud)

这是一个问题还是我做错了什么?

hibernate hbm2ddl

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

Hibernate:hbm2ddl反转列顺序

我让hbm2ddl为我创建表(用于开发目的),列的顺序与类中的字段相反.

如何使它按照与类相同的顺序创建列?

我认为Java类不存储字段的顺序,因此Hibernate根本不知道源中的顺序是什么(如果我考虑更复杂的情况,这似乎是合乎逻辑的).

但是,我能否至少要求Hibernate将PK和FK列作为第一列?

Hibernate 4.0.0(JBoss AS 7.1.2)MySQL 5.1.x.

hibernate hbm2ddl

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

从hibernate-maven-plugin 2.2版切换到3.0版时发生NullPointerException

我正在更新pom.xml依赖项的版本,当我从以下位置更改hibernate3-maven-plugin的版本时,我遇到了模糊的错误

<plugin>
    <!-- Run "mvn hibernate3:hbm2ddl" to generate schema -->
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>hibernate3-maven-plugin</artifactId>
    <version>2.2</version>
</plugin>
Run Code Online (Sandbox Code Playgroud)

<plugin>
    <!-- Run "mvn hibernate3:hbm2ddl" to generate schema -->
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>hibernate3-maven-plugin</artifactId>
    <version>3.0</version>
</plugin>
Run Code Online (Sandbox Code Playgroud)

使用2.2版,一切都可以成功编译,并且

mvn hibernate3:hbm2ddl
Run Code Online (Sandbox Code Playgroud)

从带注释的类创建正确的架构。

当我再次运行hbm2ddl命令时,仅更改版本只会导致以下错误:

[ERROR] Failed to execute goal org.codehaus.mojo:hibernate3-maven-plugin:3.0:hbm2ddl (default-cli) on project myProject: There was an error creating the AntRun task. NullPointerException -> [Help 1]
Run Code Online (Sandbox Code Playgroud)

完整的堆栈跟踪如下:

[ERROR] Failed to execute goal org.codehaus.mojo:hibernate3-maven-plugin:3.0:hbm2ddl (default-cli) on project myProject: There was an error creating the AntRun task. NullPointerException -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed …
Run Code Online (Sandbox Code Playgroud)

spring hibernate hbm2ddl maven hibernate3-maven-plugin

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

MySQL DATETIME精度(joda-time,Hibernate,org.jadira.usertype,hbm2ddl)

在我的hibernate-4实体中,我使用推荐的jadira usertypes映射joda-time DateTime属性:

@Entity
@Table(name="timing")
public class TimingEntity {
    ...
    @Basic(optional=false)
    @Column(name="moment")
    @Type(type="org.jadira.usertype.dateandtime.joda.PersistentDateTime")
    public DateTime getMoment() {
       ...
Run Code Online (Sandbox Code Playgroud)

我的数据库是MySQL.将hibernate属性hbm2ddl.auto设置为createvalue,我在timing表中生成了以下列:

CREATE TABLE `timing` (
    ...
   `moment` DATETIME NOT NULL,
    ...
)
Run Code Online (Sandbox Code Playgroud)

生成的CREATE TABLE包含DATETIME列.MySQL中的DATETIME只有秒精度,没有小数部分.为了启用小数部分,高达微秒,MySQL 5.6.4及更高版本启用 DATETIME(precision)列,例如DATETIME(3)具有毫秒精度.

我的问题是 - 有没有办法为hbm2ddl生成的时间字段指定精度?至少,这是jadira usertypes,或java.sql,或jdbc驱动程序机制的问题?

PS当我手动修改数据库表以获得我想要的精确列精度时DATETIME(3),一切正常 - joda DateTimes以毫秒精度从DB写入和读取.

java mysql hibernate jodatime hbm2ddl

5
推荐指数
2
解决办法
4174
查看次数

具有值'create'的Hibernate的'hbm2ddl.auto'属性不会重新创建表

我正在研究我的第一个简单的Hibernate应用程序.问题的症结在于,我已经重命名了持久化类的成员(对所有其他部分进行了适当的更改)并重新运行应用程序.由于'hbm2ddl.auto'属性在配置xml中被赋予'create'值,所以Hibernate应该在每次运行时创建新表,但是,它没有这样做.以下是详细信息:

类:

    public class Event {
    private Long id;

    private String title;
    private Date date;

    public Event() {
        // this form used by Hibernate
    }

    public Event(String title, Date date) {
        // for application use, to create new events
        this.title = title;
        this.date = date;
    }

    public Long getId() {
        return id;
    }

    private void setId(Long id) {
        this.id = id;
    }

    public Date getDate() {
        return date;
    }

    public void setDate(Date date) {
        this.date = date;
    } …
Run Code Online (Sandbox Code Playgroud)

hibernate hbm2ddl

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

hbm2ddl忽略@Column注释?

为什么hbm2ddl会忽略@Column注释?

这是我的班级: -

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "BASETEMPLATE")
public class BaseTemplate implements IBaseTemplate
{
    private Integer id;

    @Column(name="TEMPLATENAME")    
    private String templateName;

    @Column(name="BASETEMPLATEID")  
    private Integer baseTemplateId;

    @Id 
    @GeneratedValue 
    @Column(name = "TEMPLATEID")
    @Override
    /** {@inheritDoc} */
    public Integer getId() { return id; }       
...
}
Run Code Online (Sandbox Code Playgroud)

和hbm2dll生成此(sqlserver)表

dbo.BASETEMPLATE 
(
TEMPLATEID      int
templateName    varchar(255)
baseTemplateId  int
)
Run Code Online (Sandbox Code Playgroud)

dialect是org.hibernate.dialect.SQLServerDialect奇怪的是,主键始终是正确创建的?

hibernate hbm2ddl

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