簡體   English   中英

JPA執行查詢,但未插入數據

[英]JPA executes the query but data not inserted

我正在使用play 2.3並綁定持久對象,控制台會顯示查詢,但數據未插入db。

@Entity
@Table(name = "confrence_group")
public class ConfrenceGroup {
    @Id
    @Column(name = "id", length = 50, unique = true, nullable = false, insertable = false, updatable = false)
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @Constraints.Required
    @Column(columnDefinition = "varchar(25) default ''")
    private String name;

    @Column(columnDefinition = "int default 0")
    private int active = 1;

    @JsonIgnore
    @ManyToOne
    private User user;

    @Formats.DateTime(pattern = "yyyy-MM-dd HH:mm:yy")
    @Column(columnDefinition = "TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP")
    private Date createdTime;

    @Column(unique = true)
    private String uid = (new UniqueToken()).nextSessionId();
}

persistence.xml中

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
             version="2.1">

    <persistence-unit name="defaultPersistenceUnit" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
        <non-jta-data-source>DefaultDS</non-jta-data-source>
        <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
            <property name="hibernate.hbm2ddl.auto" value="update"/>
            <property name="javax.persistence.sql-load-script-source"
                      value="META-INF/sql/data.sql"/>
        </properties>

    </persistence-unit>

</persistence>

堅持我在做

JPA.em().persist(confGroupObjectReference)

從記錄中我可以看到

insert into confrence_group (active, createdTime, name, uid, user_id) values (1, '[SQL NULL of type 93]', 'akkk', '1474449665379l2urhrti496h0hoplm9cs55srj', 1)

試圖將其更改為本地查詢

字符串sql =“插入confrence_group( activenameuiduser_id )值(?,?,?,?)中”

   try {
        JPA.em().createNativeQuery(sql)
                .setParameter(1, 1)
                .setParameter(2, confo.getName())
                .setParameter(3, confo.getUid())
                .setParameter(4, user_id)
                .executeUpdate();
    } catch (Exception e) {
        e.printStackTrace();
    }

日志

 insert into confrence_group (`active`, `name`, `uid`, `user_id`) values (1, 'akkk', '1474443561160ojedp25m5k01e5k1kc7jg39l6p', 1)

但是對於這兩種情況,數據都沒有插入表中,因為我正在通過數據庫gui檢查,也沒有例外。 該代碼之前工作正常,但我不知道是什么導致了它的行為

有人可以幫忙嗎?

編輯:嘗試創建新模型,但問題是相同的。

看來您的ID生成是Mysql自動生成的,因此您需要將@GeneratedValue(strategy = GenerationType.AUTO)更改為@GeneratedValue(strategy=GenerationType.IDENTITY)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM