2016-04-01 14 views
0

Ich versuche zu testen, dass meine Verbindung zu Hibernate in meinem Code funktioniert, so dass ich eine grundlegende Methode zum Erstellen einer neuen Entität in einer Tabelle einrichten. Wenn ich den Code ausführe, sehe ich keinen Fehler, und als ich das erste Mal ausgeführt habe, hat Hibernate die Tabelle erfolgreich erstellt, aber die Zeile wird nicht in der Tabelle erstellt. Wer weiß, warum das passieren könnte? Eingefügte Benutzerklasse und Code zum Erstellen von unten sowie von Protokollen.Hibernate-Tabelle erstellen, aber keinen Eintrag erstellen?

public static void main(String[] args) { 
    Session session = SessionFactoryUtil.getSessionFactory().getCurrentSession(); 
    session.beginTransaction(); 
    User user = new User(); 
    user.setPassword("abcd"); 
    user.setStatus(UserStatus.OFFLINE); 
    user.setUserName("testuser"); 
    session.save(user); 
} 

Benutzerklasse:

@Entity 
    @Table(name="USERS") 
    public class User { 

    @Id 
    @GeneratedValue(strategy=GenerationType.AUTO) 
    @Column(name="USER_ID") 
    private String userId; 

    @Column(name="USER_NAME") 
    private String userName; 

    @Column(name="PASSWORD") 
    private String password; 

    @Enumerated(EnumType.STRING) 
    @Column(name="STATUS") 
    private UserStatus status; 

    public String getUserId() { 
     return userId; 
    } 

    public void setUserId(String userId) { 
     this.userId = userId; 
    } 

    public String getUserName() { 
     return userName; 
    } 

    public void setUserName(String userName) { 
     this.userName = userName; 
    } 

    public String getPassword() { 
     return password; 
    } 

    public void setPassword(String password) { 
     this.password = password; 
    } 

    public UserStatus getStatus() { 
     return status; 
    } 

    public void setStatus(UserStatus status) { 
     this.status = status; 
    } 
} 

Logs:

[main] INFO org.hibernate.cfg.Environment - Hibernate 3.5.1-Final 
[main] INFO org.hibernate.cfg.Environment - hibernate.properties not found 
[main] INFO org.hibernate.cfg.Environment - Bytecode provider name : javassist 
[main] INFO org.hibernate.cfg.Environment - using JDK 1.4 java.sql.Timestamp handling 
[main] INFO org.hibernate.cfg.Configuration - configuring from resource: /hibernate.cfg.xml 
[main] INFO org.hibernate.cfg.Configuration - Configuration resource: /hibernate.cfg.xml 
[main] INFO org.hibernate.cfg.Configuration - Reading mappings from resource : messagingservice/db/User.hbm.xml 
[main] INFO org.hibernate.cfg.HbmBinder - Mapping class: messagingservice.db.User -> USERS 
[main] INFO org.hibernate.cfg.Configuration - Configured SessionFactory: null 
[main] INFO org.hibernate.connection.DriverManagerConnectionProvider - Using Hibernate built-in connection pool (not for production use!) 
[main] INFO org.hibernate.connection.DriverManagerConnectionProvider - Hibernate connection pool size: 20 
[main] INFO org.hibernate.connection.DriverManagerConnectionProvider - autocommit mode: false 
[main] INFO org.hibernate.connection.DriverManagerConnectionProvider - using driver: com.mysql.jdbc.Driver at URL: jdbc:mysql://localhost/CAREZONE_MESSAGING 
[main] INFO org.hibernate.connection.DriverManagerConnectionProvider - connection properties: {user=hibernate, password=****} 
[main] INFO org.hibernate.cfg.SettingsFactory - RDBMS: MySQL, version: 5.7.11-log 
[main] INFO org.hibernate.cfg.SettingsFactory - JDBC driver: MySQL Connector Java, version: mysql-connector-java-5.1.37 (Revision: 09940f05b4c98150f352e787a2549f11a2e9da93) 
[main] INFO org.hibernate.dialect.Dialect - Using dialect: org.hibernate.dialect.MySQL5InnoDBDialect 
[main] INFO org.hibernate.transaction.TransactionFactoryFactory - Transaction strategy: org.hibernate.transaction.JDBCTransactionFactory 
[main] INFO org.hibernate.transaction.TransactionManagerLookupFactory - No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended) 
[main] INFO org.hibernate.cfg.SettingsFactory - Automatic flush during beforeCompletion(): disabled 
[main] INFO org.hibernate.cfg.SettingsFactory - Automatic session close at end of transaction: disabled 
[main] INFO org.hibernate.cfg.SettingsFactory - JDBC batch size: 15 
[main] INFO org.hibernate.cfg.SettingsFactory - JDBC batch updates for versioned data: disabled 
[main] INFO org.hibernate.cfg.SettingsFactory - Scrollable result sets: enabled 
[main] INFO org.hibernate.cfg.SettingsFactory - JDBC3 getGeneratedKeys(): enabled 
[main] INFO org.hibernate.cfg.SettingsFactory - Connection release mode: auto 
[main] INFO org.hibernate.cfg.SettingsFactory - Maximum outer join fetch depth: 2 
[main] INFO org.hibernate.cfg.SettingsFactory - Default batch fetch size: 1 
[main] INFO org.hibernate.cfg.SettingsFactory - Generate SQL with comments: disabled 
[main] INFO org.hibernate.cfg.SettingsFactory - Order SQL updates by primary key: disabled 
[main] INFO org.hibernate.cfg.SettingsFactory - Order SQL inserts for batching: disabled 
[main] INFO org.hibernate.cfg.SettingsFactory - Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory 
[main] INFO org.hibernate.hql.ast.ASTQueryTranslatorFactory - Using ASTQueryTranslatorFactory 
[main] INFO org.hibernate.cfg.SettingsFactory - Query language substitutions: {} 
[main] INFO org.hibernate.cfg.SettingsFactory - JPA-QL strict compliance: disabled 
[main] INFO org.hibernate.cfg.SettingsFactory - Second-level cache: enabled 
[main] INFO org.hibernate.cfg.SettingsFactory - Query cache: disabled 
[main] INFO org.hibernate.cfg.SettingsFactory - Cache region factory : org.hibernate.cache.impl.bridge.RegionFactoryCacheProviderBridge 
[main] INFO org.hibernate.cache.impl.bridge.RegionFactoryCacheProviderBridge - Cache provider: org.hibernate.cache.HashtableCacheProvider 
[main] INFO org.hibernate.cfg.SettingsFactory - Optimize cache for minimal puts: disabled 
[main] INFO org.hibernate.cfg.SettingsFactory - Structured second-level cache entries: disabled 
[main] INFO org.hibernate.cfg.SettingsFactory - Statistics: disabled 
[main] INFO org.hibernate.cfg.SettingsFactory - Deleted entity synthetic identifier rollback: disabled 
[main] INFO org.hibernate.cfg.SettingsFactory - Default entity-mode: pojo 
[main] INFO org.hibernate.cfg.SettingsFactory - Named query checking : enabled 
[main] INFO org.hibernate.cfg.SettingsFactory - Check Nullability in Core (should be disabled when Bean Validation is on): enabled 
[main] INFO org.hibernate.impl.SessionFactoryImpl - building session factory 
[main] INFO org.hibernate.impl.SessionFactoryObjectFactory - Not binding factory to JNDI, no JNDI name configured 
[main] INFO org.hibernate.tool.hbm2ddl.SchemaExport - Running hbm2ddl schema export 
[main] INFO org.hibernate.tool.hbm2ddl.SchemaExport - exporting generated schema to database 
[main] INFO org.hibernate.tool.hbm2ddl.SchemaExport - schema export complete 

Antwort

4

Sie Ihre Transaktion nicht zu begehen. Sie müssen Folgendes tun:

public static void main(String[] args) { 
    Session session = SessionFactoryUtil.getSessionFactory().getCurrentSession(); 

    Transaction tx = session.beginTransaction(); 

    User user = new User(); 
    user.setPassword("abcd"); 
    user.setStatus(UserStatus.OFFLINE); 
    user.setUserName("testuser"); 

    session.save(user); 
    tx.commit(); 
    session.close(); 
} 
+0

Das hat es getan. Vielen Dank! – thurmc

Verwandte Themen