views:

87

answers:

1

I have 2 question I wanna make Mysql table that have charset utf8 but I don't know where I shoud set the setting. (I just have a hibernate.cfg.XMl no any .xml file for hibernate) i dun want set mysql.ini file that default setting was UTF-8 I wanna put this setting in my hibernate.

second Question: I have this table:

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;

How can i Map these to and Java entity I can do like this:

@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
}

but i want to set (username,buildingname,tel) together as a primary key how I can do it by annotation in hibernate

TanX in advance

+1  A: 

For UTF-8:

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


As for setting a combined primary key, it is possible, but having worked with it I can say I wouldnt recommend it. From the documentation:

You can define a composite primary key through several syntaxes:

  • annotate the component property as @Id and make the component class @Embeddable
  • annotate the component property as @EmbeddedId
  • annotate the class as @IdClass and annotate each property of the entity involved in the primary key with @Id

This becomes a pain to work with, and it isn't the recommended way to do this in Hibernate.

What I would recommend instead is to use the @NaturalId annotation:

While not used as identifier property, some (group of) properties represent natural identifier of an entity. This is especially true when the schema uses the recommended approach of using surrogate primary key even if a natural business key exists. Hibernate allows to map such natural properties and reuse them in a Criteria query. The natural identifier is composed of all the properties marked @NaturalId.

Tim
Tanx man,It's work for me
Am1rr3zA