我有2个问题 我想制作具有charset utf8的Mysql表,但我不知道我在哪里设置设置。 (我只是有一个hibernate.cfg.XMl没有用于hibernate的任何.xml文件) 我不想设置mysql.ini文件,默认设置是UTF-8我想把这个设置放在我的休眠状态。
第二个问题: 我有这张桌子:
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中的注释来完成它
TanX提前
答案 0 :(得分:1)
对于UTF-8:
<property name=”hibernate.connection.useUnicode”
value=”true” />
<property name=”hibernate.connection.characterEncoding”
value=”UTF-8″ />
至于设置组合主键,这是可能的,但是使用它我可以说我不推荐它。来自the documentation:
您可以定义复合主键 通过几种语法:
- 将组件属性注释为@Id并创建组件类 @Embeddable
- 将组件属性注释为@EmbeddedId
- 将该类注释为@IdClass并注释该实体的每个属性 使用@Id
参与主键
使用起来很麻烦,并且不建议在Hibernate中执行此操作。
我建议使用the @NaturalId annotation:
虽然没有用作标识符属性, 一些(一组)属性代表 实体的自然标识符。这个 架构时尤其如此 使用推荐的使用方法 代理主键即使是 自然业务密钥存在。过冬 允许映射这样的自然属性 并在Criteria查询中重用它们。 自然标识符由 所有标记为@NaturalId的属性。