您可以通過使用自定義的邏輯從數據庫獲取最新的標識。示例我做了什麼來解決我的問題。它的工作原理與Hibernate -
@Id
@Basic(optional = false)
@GeneratedValue(strategy=GenerationType.IDENTITY, generator="GeneratedId")
@GenericGenerator(name="GeneratedId",
strategy="....GenerateId"
)
@Column(name = "ID", nullable = false)
private Integer id;
和
import org.hibernate.id.IdentityGenerator;
...
public class GenerateId extends IdentityGenerator {
private static final Logger log = Logger.getLogger(GenerateId.class.getName());
@Override
public Serializable generate(SessionImplementor session, Object obj) throws HibernateException {
String prefix = "M";
Connection connection = session.connection();
try {
PreparedStatement ps = connection
.prepareStatement("SELECT nextval ('seq_stock_code') as nextval");
ResultSet rs = ps.executeQuery();
if (rs.next()) {
int id = rs.getInt("nextval");
String code = prefix + StringUtils.leftPad("" + id,3, '0');
log.debug("Generated Stock Code: " + code);
return code;
}
} catch (SQLException e) {
log.error(e);
throw new HibernateException(
"Unable to generate Stock Code Sequence");
}
return null;
}
我該怎麼做?我用這個:'@Id @SequenceGenerator(name =「id_generator」,sequenceName =「SEQUENCE_NAME」,allocationSize = 1) @GeneratedValue(generator =「id_generator」,strategy = GenerationType.SEQUENCE)''但結果相同 – Irakli
http: //stackoverflow.com/questions/2595124/java-jpa-generators-sequencegenerator,請參閱鏈接,希望它能解決您的問題。 –