Hibernate: Automatically creating/updating the db tables based on entity classes
I don't know if leaving hibernate
off the front makes a difference.
The reference suggests it should be hibernate.hbm2ddl.auto
A value of create
will create your tables at sessionFactory creation, and leave them intact.
A value of create-drop
will create your tables, and then drop them when you close the sessionFactory.
Perhaps you should set the javax.persistence.Table
annotation explicitly?
Hope this helps.
Does Hibernate create tables in the database automatically
your hibernate.hbm2ddl.auto setting should be defining that the database is created (options are validate
, create
, update
or create-drop
)
Hibernate doesn't create tables automatically
I found a solution. The problem was that Application.java was in package com.example.BotApp.
, now it's in com.example.
. I don't know, but somehow it helped.
Hibernate Creating Or Updating Entity triggers update on related (Child) Entity
The permissions were mapped badly
This is the way it should look
permissions column is mutable and Hibernate flushes again because it can't determine dirtiness
The solution was:
@Type(
type = "com.vladmihalcea.hibernate.type.array.EnumArrayType",
parameters = {@Parameter(name = EnumArrayType.SQL_ARRAY_TYPE, value = "permission")})
@Column(name = "permissions", columnDefinition = "permission[]")
private Permission[] permissions;
Hibernate automatically creates table/drops old one
You have this property javax.persistence.schema-generation.database.action
The values for this property are none
, create
, drop-and-create
, drop
.
update
is not a valid value for this property.
Additionally, you already have hibernate.hbm2ddl.auto
property, so I suggest just remove the first one.
JPA ddl-auto=create/update with schema= mentioned in Entity not working with spring boot 2.1
The schema is not auto created by H2.
You have to add:
jdbc:h2:mem:test;INIT=CREATE SCHEMA IF NOT EXISTS MYSCHM
How create the database through Hibernate
If your configuration looks like this
<hibernate-configuration>
<session-factory>
<property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property>
<property name="connection.driver_class">org.postgresql.Driver</property>
<property name="connection.url">jdbc:postgresql://host:port/database</property>
<property name="connection.username">username</property>
<property name="connection.password">password</property>
<property name="current_session_context_class">thread</property>
<property name="hibernate.show_sql">false</property>
<property name="hbm2ddl.auto">update</property>
</session-factory>
</hibernate-configuration>
Then the database will be created by Hibernate automatically.
Update:
Ok now I understand what you want. You want to start the Postgresql server with Hibernate. This is not possible. Hibernate does not do this.
You can do this with
- Another script that starts with your application
- A maven/ant target.
- A build job
But the best solution is to use an in-memory database that does not need an external server (for example H2, or Java derby)
See also
Simulate CREATE DATABASE IF NOT EXISTS for PostgreSQL?
and
Postgres database create if not exists
Related Topics
Android Drawable Speech Bubble
Android 3.1 Usb-Host - Broadcastreceiver Does Not Receive Usb_Device_Attached
Recyclerview Painfully Slow to Load Cached Images Form Picasso
Reducing Android App (Apk) Size
How to Wait for All Tasks in an Threadpoolexecutor to Finish Without Shutting Down the Executor
How to Programmatically Add Views and Constraints to a Constraintlayout
Parcelable and Inheritance in Android
Android Studio - Failed to Find Target Android-18
Onrequestpermissionsresult Not Being Called in Dialog Fragment
Kotlin-Android: Unresolved Reference Databinding
Java Hotspot(Tm) 64-Bit Server Vm Warning: Ignoring Option Maxpermsize
Setting a Timeout for Socket Operations
How to Get a String Between Two Characters
Why Comparing Integer with Int Can Throw Nullpointerexception in Java