如何用JPA建立这样的数据库表结构

如何用JPA建立这样的数据库表结构,第1张

代码样例:

String sql = "create table tablename(id number, title varchar2(20), intro varchar2(200), time timestamp)"

PreparedStatement stmt = conn.prepareStatement(sql)

stmt.execute()

解析:

表语句与oracle建表语句相同。主要的点是java程序与数据库连接及数据交互的过程代码。

PreparedStatement与Statement区别:

statement每次执行sql语句,相关数据库都要执行sql语句的编译,preparedstatement是预编译得,preparedstatement支持批处理。

Java

Persistence

API

JPA通过JDK

5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。

你看一下百度百科

我最近使用springboot的时候也遇到跟你一样的问题

我的BaseModel

public class BaseModel implements Serializable {

@Id

@GeneratedValue(strategy = GenerationType.AUTO)

@Column(name = "id")

private Long id

protected BaseModel(){

this.id = 1L

}

public Long getId() {

return id

}

public void setId(Long id) {

this.id = id

}

public boolean equals(Object other) {

if (other == null || other.getClass() != this.getClass())

return false

if(this.getId() == null || ((BaseModel) other).getId() == null) return false

return this.getId().equals(((BaseModel) other).getId())

}

public int hashCode() {

return new HashCodeBuilder().append(getId()).toHashCode()

}

}

这里的BaseModel是我的实体类的父类,我错误的原因是序列化没有重写好equals函数,因为动态生成sql语句的时候主键默认为null,无法识别这是不是一个新的对象(我的理解),所以重写的时候多了

if(this.getId() == null || ((BaseModel) other).getId() == null) return false

因为主键不为空,为null肯定不相等。我就这样解决了,不知道能不能帮到你了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9953883.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存