我已经使用Hibernate将Java对象映射到PostgreSQL数据库。UserDetails类是用来添加用户的实体类,它包含一个名为Address的嵌入对象。
userdetails.java
@Entity
@Table(name="USER_DETAILS")
public class UserDetails {
@Id @GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="USER_ID")
private int userId;
@Column(name="USER_NAME")
private String userName;
@Temporal(TemporalType.DATE)
@Column(name="JOINED_DATE")
private Date joinedDate;
@Column(name="DESCRIPTION")
private String description;
@Embedded
private Address address;
}
import javax.persistence.Embeddable;
@Embeddable
public class Address {
private String street;
private String city;
private String state;
private String pincode;
}
public class HibernateTest {
public static void main(String[] args){
UserDetails user = new UserDetails();
UserDetails user1 = new UserDetails();
user.setUserName("First User");
Address newAddress = new Address();
newAddress.setCity("Pune");
newAddress.setPincode("411057");
newAddress.setState("Maharashtra");
newAddress.setStreet("Hinjewadi");
user.setAddress(newAddress);
user.setDescription("just like that");
user.setJoinedDate(new Date());
user1.setUserName("Second User");
user1.setDescription("great here");
user1.setJoinedDate(new Date());
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
Session session = sessionFactory.openSession();
session.beginTransaction();
session.save(user);
session.save(user1);
session.getTransaction().commit();
session.close();
user = null;
session = sessionFactory.openSession();
session.beginTransaction();
user = session.get(UserDetails.class, 1);
System.out.println(user.getUserName());
session.close();
sessionFactory.close();
}
}
生成的SQL查询如下所示,它显示列的添加顺序与声明列的顺序不同。
Hibernate: create sequence hibernate_sequence start 1 increment 1
Hibernate: create table USER_DETAILS (USER_ID int4 not null, city varchar(255), pincode varchar(255), state varchar(255), street varchar(255), DESCRIPTION varchar(255), JOINED_DATE date, USER_NAME varchar(255), primary key (USER_ID))
在Hibernate中添加哪些列有什么规则吗?
HBM to ddl库
使用反射来获取类中的字段,根据文档,字段的顺序没有得到保留/保证:
https://docs.oracle.com/javase/7/docs/api/java/lang/class.html#getfields()
返回包含字段对象的数组,字段对象反映由该类对象表示的类或接口的所有可访问公共字段。返回的数组中的元素没有排序,也没有任何特定的顺序。如果类或接口没有可访问的公共字段,或者表示数组类、基元类型或空,则此方法返回长度为0的数组。
在编写依赖反射的库时,我也遇到过类似的问题。
问题内容: 我是Android开发人员的新手,但仍然可以做很多事情。 我有一个使用以下代码显示的主菜单,但无法确定如何禁用菜单中的选定项目。有人可以帮我一些示例代码吗? 我的strings.xml文件中有一个: 谢谢 问题答案: 为了在创建列表时禁用列表项,您必须从继承。您必须重写以下方法:和。在以前,您返回或取决于列表项在给定位置是否启用。在后者中,您返回。 如果要使用,则还必须实现该方法,因为
我正在尝试创建列表列表,其中大列表表示纸张包含小列表表示问题的集合,问题列表由问题字符串及其ID组成。在这里我的代码: 现在我没有错误地制作问题列表,但是当我尝试创建更大的列表时,Visual Studio无法将可变问题类型识别为类型,哪里错了?
问题内容: 这是我的pojo,注为实体 等等...... 上面的实体是使用注释创建的,当我查看mysql数据库时,没有按顺序创建列,而是在下面编写的,相反,第一列是book_id,然后是book_desc,然后是book_athor,然后是book_short_desc,然后是book_name。 我的问题是如何告诉hibernate以与我在Java代码中编写的顺序相同的顺序创建列? 有没有任何注
我不熟悉java和springboot。我正在尝试使用springboot创建一个CRUD应用程序。我使用MySQL存储数据。 员工模式- 员工资源库- 员工控制员- 上面的控制器在JSON对象数组表单中给出了结果,如下所示 但我需要以下表格的回复 非常感谢你的帮助。
我有一个映射到视图的实体,下面是它的外观 这工作得很好,我可以使用道从视图中检索记录。然而,我在日志中注意到Hibernate实际上正在尝试创建表,但失败了,因为它已经存在。 2015-11-12 21:56:34.841错误4204---[ost-startStop-1]组织。冬眠工具hbm2ddl。SchemaExport:HHH000389:不成功:创建表user\u profile(use
问题内容: 我有一堂课 我有一个返回List对象的方法,例如 我需要像这样将列表转换为JSONArray 谁能帮我得到这个?在此先感谢.. 问题答案: 我认为您无需下载Jettison jar文件。 使用,您可以轻松地将该列表转换为JSON对象,例如@Juniad Answer