Java 一些冬眠问题

Java 一些冬眠问题,java,mysql,hibernate,Java,Mysql,Hibernate,我有两个问题 我想制作具有字符集utf8的Mysql表,但我不知道应该在哪里设置。 (我只有一个hibernate.cfg.XMl文件,没有任何用于hibernate的.XMl文件) 我不想设置mysql.ini文件,默认设置是UTF-8,我想把这个设置放在我的hibernate中 第二个问题: 我有这张桌子: CREATE TABLE `buildingtel` ( `username` varchar(50) NOT NULL, `buildingname` varchar(50) NOT

我有两个问题 我想制作具有字符集utf8的Mysql表,但我不知道应该在哪里设置。 (我只有一个hibernate.cfg.XMl文件,没有任何用于hibernate的.XMl文件) 我不想设置mysql.ini文件,默认设置是UTF-8,我想把这个设置放在我的hibernate中

第二个问题: 我有这张桌子:

CREATE TABLE `buildingtel` (
`username` varchar(50) NOT NULL,
`buildingname` varchar(50) NOT NULL,
`tel` varchar(15) NOT NULL,
PRIMARY KEY (`username`,`buildingname`,`tel`),
KEY `FK_buildingtel_2` (`buildingname`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
如何将这些映射到和Java实体 我可以这样做:

@Entity
@Table(name = "btel")
public class Btel {

@Id
@GeneratedValue
@Column(name = "id")
private int id;;
@Column(name = "username", length=50)
private String username;
@Column(name = "buildingname", length=50)
private int buildingname;
@Column(name = "tel", length=15)
private int tel;
//some setter & getter
}
但是我想将(
username
buildingname
tel
)一起设置为一个主键,作为如何在hibernate中通过注释来实现这一点

对于UTF-8,提前TanX

<property name=”hibernate.connection.useUnicode”
value=”true” />
<property name=”hibernate.connection.characterEncoding”
value=”UTF-8″ />


至于设置一个组合主键,这是可能的,但使用它之后,我可以说我不推荐它。发件人:

您可以定义复合主键 通过几个语法:

  • 将组件属性注释为@Id并使组件类 @可嵌入
  • 将组件属性注释为@EmbeddedId
  • 将类注释为@IdClass,并注释实体的每个属性 包含在带有@Id的主键中
这会让人感到痛苦,在Hibernate中不推荐这样做

我建议改为使用:

虽然未用作标识符属性, 某些(一组)属性表示 实体的自然标识符。这 当模式 使用推荐的使用方法 代理主键,即使 自然业务密钥存在。冬眠 允许映射这些自然属性 并在条件查询中重用它们。 自然标识符由以下部分组成: 所有标记为@naturaid的属性